procedure TForm1.Button1Click(Sender: TObject);
var
si : STARTUPINFO;
pi : TProcessInformation;
vBool:Boolean;
begin
FillChar(si, SizeOf(si), 0);
si.dwFlags := STARTF_USESHOWWINDOW;
si.wShowWindow := SW_Hide;
vBool:=CreateProcess( nil,'D:\Project1.exe',nil,nil,true,0,nil,nil,si,pi ); if not vBool then
Exit; WaitForSingleObject( pi.hProcess, 1000); {其它处理代码...} CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
end;
Project1.exe 无任何代码
si.wShowWindow := SW_Hide;不起作用的
死活都不帮我把Project1窗口给隐藏起来???
var
si : STARTUPINFO;
pi : TProcessInformation;
vBool:Boolean;
begin
FillChar(si, SizeOf(si), 0);
si.dwFlags := STARTF_USESHOWWINDOW;
si.wShowWindow := SW_Hide;
vBool:=CreateProcess( nil,'D:\Project1.exe',nil,nil,true,0,nil,nil,si,pi ); if not vBool then
Exit; WaitForSingleObject( pi.hProcess, 1000); {其它处理代码...} CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
end;
Project1.exe 无任何代码
si.wShowWindow := SW_Hide;不起作用的
死活都不帮我把Project1窗口给隐藏起来???
vBool:=CreateProcess( 'D:\Project1.exe',nil,nil,nil,true,0,nil,nil,si,pi );
在我的系统下成功。(win7+D2010)
如果是你原有的程序,直接报错。
另外:si.wShowWindow := SW_Hide可以不写,因为SW_Hide=0
不过原来我也是写成你原有的,在BCB下成功。参见:
http://topic.csdn.net/t/20050326/17/3883795.html
另外,根据某些说法,Hide的意思是不显示当前窗口,并激活其他窗口,也就相当于是最小化了窗口
并且不能通过点击来再restore出来
而visible 则是可视
所以如果你在程序过程中,要想真正隐藏窗口的话,
就设置visible := false就可以了
with si do begin
cb := SizeOf(si);
dwFlags := dwFlags or STARTF_USESHOWWINDOW;
wShowWindow := SW_HIDE;
end;
STARTF_USESHOWWINDOW:
If this value is not specified, the wShowWindow member is ignored.