如何关闭winexec函数调出的可执行程序?
我用winexec(Pchar(temp),SW_SHOW);调出一个可执行程序,但是我想在我的程序中动态的关掉刚刚调出的程序,如何做?如果要用到句柄,怎么才能知道刚才调出的程序的句柄。 问题点数:30、回复次数:6Top
1 楼MSHawk(憨憨)回复于 2002-05-27 16:39:06 得分 2
你用CreateProcess创建进程吧,这个函数会返回一个被创建进程的句柄的,用TerminateProcess可以停止此进程。Top
2 楼aper168(凌宇)回复于 2002-05-27 17:12:02 得分 1
winexec(Pchar(temp),SW_HIDE);Top
3 楼pukerno3(飞天)回复于 2002-05-27 17:15:00 得分 0
to aper168(凌宇) :治标不治本啊!Top
4 楼pukerno3(飞天)回复于 2002-05-27 17:29:13 得分 0
to mshawk(憨憨) :可以详细讲一下CreateProcess的参数吗?最好有个例子!!!Top
5 楼Past(Past)回复于 2002-05-27 17:57:50 得分 1
还有一个办法,查找这个程序的窗口句柄,给它发关闭消息Top
6 楼netfairy(泡泡猪)回复于 2002-05-27 19:24:33 得分 26
var
hProcess:THandle;
szCommandLine:string=' -n ';
sui:TStartupInfo;
pi:TProcessInformation;
begin
//Create the Process
sui.cb:=sizeof(TStartupInfo);
sui.lpReserved:=nil;
sui.lpDesktop:=nil;
sui.lpTitle:=nil;
sui.hStdOutput:=hWritePipe;//这个你可以不设
sui.hStdError:=hWritePipe;//这个你可以不设
sui.dwFlags:=STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
CreateProcess('c:\winnt\windump.exe', PChar(szCommandLine), nil, nil, True, 0, nil, nil, sui, pi);
hProcess:=pi.hProcess;
//Wait
Sleep(SleepTime);
//Terminate the Process
TerminateProcess(hProcess,0);
end;Top




