ShellExecute的最后一个参数用SW_shownormal,显示窗体,然后再按照老妖说的办法,调整位置,居中。 大致思路如下:自己再改改吧。其实个人认为,你完全没有必要搞那么麻烦,把ShellExecute的最后一个参数设置成SW_SHOWMAXIMIZED,最大化不就可以了吗?当然,你可能有自己特殊的需求。 procedure TForm1.Button1Click(Sender: TObject); var a : THandle; i,j : integer; begin //SW_shownormal ShellExecute(Handle,'open',PCHAR('C:\WINDOWS\system32\notepad.exe'),'','',SW_NORMAL); a := FindWindow('notepad',nil); //计算位置 i :=Screen.Width div 2 - 250; j := screen.Height div 2 -250; if a <> 0 then MoveWindow(a,i,j,500,500,true) ;end;
大致思路如下:自己再改改吧。其实个人认为,你完全没有必要搞那么麻烦,把ShellExecute的最后一个参数设置成SW_SHOWMAXIMIZED,最大化不就可以了吗?当然,你可能有自己特殊的需求。
procedure TForm1.Button1Click(Sender: TObject);
var
a : THandle;
i,j : integer;
begin
//SW_shownormal
ShellExecute(Handle,'open',PCHAR('C:\WINDOWS\system32\notepad.exe'),'','',SW_NORMAL);
a := FindWindow('notepad',nil);
//计算位置
i :=Screen.Width div 2 - 250;
j := screen.Height div 2 -250;
if a <> 0 then
MoveWindow(a,i,j,500,500,true) ;end;