我在当前登录的用户会话中使用API函数GetExitCodeProcess来监视进程的退出代码。此过程在另一个会话(SYSTEM)中运行。 函数立即返回,退出代码为0. 我不认为这是正确的。GetExitCodeProcess无法在另一个会话中运行进程?
任何人都可以告诉如果这个函数总是会失败/如果进程已经在不同的会话中启动,会给出错误的结果吗?
我的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
谢谢。
您可能没有必要的权限来打开该过程。 –