我使用CreateProcess
来启动我的.exe。我想知道是否一切都很好,或者当我试图启动这个.exe.时,它是否遇到了错误
据我所知,我需要使用GetLastError()
,但我试图模拟进程路径中的错误,但它返回了相同的上一个错误代码。
所以我想知道CreateProcess
是否成功,以及这个过程是否完成。我该怎么做才能做到这一点?
谢谢。
CreateProcess:的文档中详细说明了您要查找的所有信息
如果函数成功,则返回值为非零。
如果函数失败,则返回值为零。若要获取扩展的错误信息,请调用GetLastError。
请注意,函数在进程完成初始化之前返回。如果找不到所需的DLL或无法初始化,则进程将终止。要获取进程的终止状态,请调用GetExitCodeProcess。
如果需要等待目标进程终止,请对调用CreateProcess
所填写的process_INFORMATION中返回的进程句柄调用WaitForSingleObject。
由于您控制目标流程,因此您可以自由选择任何方案,以便从流程的退出代码中确定成功或失败。您可以在进程句柄转换到信号状态后的任何时间调用GetExitCodeProcess
,也可以在调用CloseHandle
之前调用它。
我能想到几种方法:
#1-枚举
您可以枚举进程并检查PID
是否在列表中。查看EnumProcesses
#2-检查退出代码
您可以使用GetExitCodeProcess。如果进程仍在运行,它将返回STILL_ACTIVE
(259(
#3-过程手柄
WaitForSingleObject使用具有SYNCHRONIZE访问权限的进程句柄,如果进程未运行,则返回0。
注意:您不应该为dwMilliseconds参数指定INFINITE,因为在进程状态发出信号(进程终止(之前,函数不会返回