我在当前login的用户会话中使用API函数GetExitCodeProcess来监视进程的退出代码。 此过程在另一个会话(SYSTEM)中运行。 该函数立即返回一个退出代码0.我不认为这是正确的。
任何人都可以告诉如果这个函数总是失败/如果进程已经开始在不同的会话中给出错误的结果?
我的VB6代码是这样的,如果有人感兴趣:
Public Function GetProcExitCode(ByVal uProcID As Long) As Long Const STILL_ACTIVE = &H103& Const PROCESS_QUERY_INFORMATION = &H400& Dim lProcHnd As Long lProcHnd = OpenProcess(PROCESS_QUERY_INFORMATION, True, uProcID) Dim lTick As Long lTick = GetTickCount Dim lRet& lRet = 0 'Wait for process end Do GetExitCodeProcess lProcHnd, lRet Loop While lRet = STILL_ACTIVE CloseHandle lProcHnd GetProcExitCode = lRet Dim lTicks& lTicks = GetTickCount() - lTick WriteLog "!!! GetExitCodeProcess needed " & lTicks & " ms." End Function
谢谢。
来自Microsoft MSDN :
返回值
如果函数成功,则返回值为非零。
如果函数失败,返回值为零。 要获得扩展错误信息,请调用GetLastError。
给出零的返回值似乎是一个错误。