向高手请教GetExitCodeProcess----急,谢谢!(10分)

  • 主题发起人 主题发起人 terrace
  • 开始时间 开始时间
T

terrace

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序中创建了一进程,代码如下:<br>var <br>d:DWORD;<br>lSI:tStartupInfo;<br>lPI:tProcessInformation;<br>begin<br>&nbsp; ZeroMemory(@lSI,sizeof(lSI)) &nbsp;;<br>&nbsp; lSI.cb := SizeOf(lSI);<br>&nbsp; lSI.dwFlags := STARTF_USESHOWWINDOW;<br>&nbsp; lSI.wShowWindow := SW_SHOWNORMAL;<br>&nbsp; CreateProcess(nil,PChar('c:/func/project1.exe'),nil,nil,false,0,nil,nil,lSI,lPI);<br>&nbsp; WaitforSingleObject(lpi.hProcess,10000);<br>&nbsp; GetExitCodeProcess(lpi.hProcess,d);<br>end;<br>在进程程序c:/func/project1.exe中只有一个main(),定义为function型,返回类型为DWORD(我期望把此值传给GetExitCodeProcess中的第二个参数),但运行到GetExitCodeProcess(lpi.hProcess,d);后d为0,即没有成功取得需要的值,我为了测试,让进程程序死循环,这时d=259,即为STILL_ACTIVE,即此状态返回成功。究竟问题出在哪里呢???
 
在任何地方写 &nbsp;ExitCode:=你想要的数字;<br>
 
楼上朋友:<br>&nbsp; &nbsp; 你说到了关键的地方,谢谢!另外,请问在GetExitCodeProcess(lpi.hProcess,d);之前还需要调用h:=OpenProcess(PROCESS_QUERY_INFORMATION,true,lpi.hProcess);吗?为什么这个函数总是返回0即失败呢?
 
接受答案了.
 
后退
顶部