winexec在98系统下完成后如何关闭调用的窗口(50分)

  • 主题发起人 主题发起人 wdy801229
  • 开始时间 开始时间
W

wdy801229

Unregistered / Unconfirmed
GUEST, unregistred user!
winexec在98系统下完成后如何关闭调用的窗口
 
//用CreateProcess
var
lpProcessInformation: TProcessInformation;

procedure TForm1.Button1Click(Sender: TObject);
var
StartupInfo : TStartupInfo;
begin
FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
StartupInfo.cb := SizeOf(TStartupInfo);
StartupInfo.wShowWindow := SW_SHOW;
CreateProcess('d:/winnt/NOTEPAD.EXE', nil, nil, nil, False, 0, nil, nil, StartupInfo, lpProcessInformation);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
lpExitCode: DWORD;
begin
GetExitCodeProcess(lpProcessInformation.hProcess, lpExitCode);
TerminateProcess(lpProcessInformation.hProcess, lpExitCode);
end;
 
请问大虾为什么要做这部FillChar(StartupInfo, SizeOf(TStartupInfo), 0);?
点击button1为什么没出现d:/winnt/NOTEPAD.EXE的界面呢?
GetExitCodeProcess(lpProcessInformation.hProcess, lpExitCode);做何用,帮助看不明白
谢谢!
 
FillChar(StartupInfo, SizeOf(TStartupInfo), 0);//初始化StartupInfo
可能d:/winnt/NOTEPAD.EXE不存在找一下這個文件NOTEPAD.EXE
 
lpExitCode是不是系统随机指定的呢?
我试了一下,屏蔽GetExitCodeProcess(lpProcessInformation.hProcess, lpExitCode);依然可以。TProcessInformation能自动取到进程的信息,不用给lpProcessInformation赋值吗?
多谢
 
在sdk中說的,可能是要終止所有相關線程
 
你这么问东西真的不好,自己一点思考都没有。
1楼已经说的那么详细了啊。
 
winexec调用的外部程序和原程序脱离了关系,
必须CreateProcess,这样调用的外部程序是原来程序的子程序,
可以控制。
 
多人接受答案了。
 
to kingda:谢谢,你指教时我正结帖,不好意思。
 
后退
顶部