GetExitCodeProcess 在另一个会话中运行的进程失败



我在当前登录的用户会话中使用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。


给出零的返回值似乎是一个错误。

相关内容

  • 没有找到相关文章

最新更新