这个例子我启动NOTEPAD,然后获得窗口句柄,类似的完成你自己的操作。 可以使用findwindow函数来获得window句柄,但好像不是很可靠。procedure TForm1.Button1Click(Sender: TObject); var NowHandle:HWND; winTitle:array [0..255] of char; nowPos:integer; begin //启动NOTEPAD winexec('c:\winnt\notepad.exe',SW_NORMAL); Nowhandle:=Getwindow(handle, GW_HWNDFIRST); while NowHandle<>0 do begin GetwindowText(Nowhandle,winTitle,255); nowpos:=pos('记事本',trim(string(wintitle))); if NowPos<>0 then begin setwindowpos(Nowhandle,HWND_TOP,0,0,500,500, SWP_SHOWWINDOW ); exit; end else begin NowHandle:=GetWindow(NowHandle,GW_HWNDNEXT); end; end; end;
窗口的位置是:x:100,y:100,大小是:width= 200,height=200.
可以使用findwindow函数来获得window句柄,但好像不是很可靠。procedure TForm1.Button1Click(Sender: TObject);
var
NowHandle:HWND;
winTitle:array [0..255] of char;
nowPos:integer;
begin
//启动NOTEPAD
winexec('c:\winnt\notepad.exe',SW_NORMAL);
Nowhandle:=Getwindow(handle, GW_HWNDFIRST);
while NowHandle<>0 do begin
GetwindowText(Nowhandle,winTitle,255);
nowpos:=pos('记事本',trim(string(wintitle)));
if NowPos<>0 then begin
setwindowpos(Nowhandle,HWND_TOP,0,0,500,500, SWP_SHOWWINDOW );
exit;
end
else begin
NowHandle:=GetWindow(NowHandle,GW_HWNDNEXT);
end;
end;
end;
更好是用CreateProcess,在它的StartInfo中就设定主窗口的大小和位置。
或者你使用楼上所说使用CreateProcess也可以,但是你要填一些结构,会比较麻烦一些。如果你连要启动什么程序都不知道的话,只有另外考虑了。你的情况现在说的和开始希望的并不完全一样了。