Вот, накидал тебе примерчик. Прога запускает сама себя, ищет в новом процессе первое попавшееся окно и выдает его в мессаджбоксе. Надеюсь, что особого труда не составит переделать пример под себя.
| Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm} function EWProc(Wnd: hWnd; lParam:cardinal):boolean;stdcall; var ProcID, ThreadID: cardinal; begin Result:=true; ThreadID:= GetWindowThreadProcessId(Wnd, ProcID); if ProcID=lParam then begin MessageBox(0, PChar('Handle = '+inttostr(Wnd)),PChar('ProcessID = '+inttostr(ProcID)) , mb_ok); Result:=false; end; end;
procedure TForm1.Button1Click(Sender: TObject); var ProcInfo: TProcessInformation; SUI: TStartupInfo; ProcID, ThreadID: cardinal; begin ZeroMemory(@SUI, SizeOf(SUI)); SUI.cb:=SizeOf(SUI); CreateProcess(nil, PChar(paramstr(0)), nil, nil, False, NORMAL_PRIORITY_CLASS, nil, nil, SUI, ProcInfo); sleep(500);// здесь ждем, пока окошко появится. // можно EnumWindows и в цикл поставить EnumWindows(@EWProc, ProcInfo.dwProcessId); end;
end.
|
|