0

ShellExecuteEx(..) を使用して Python スクリプトを起動し、Python スクリプトが成功時に sys.exit(0) を使用して python main から値を返すか、その他のエラー値を返します。Pythonスクリプトの終了コードを読む方法は?

アプリケーションを起動した後、MsgWaitForMultipleObjects (...) を使用してスクリプトの完了を待機し、GetExitCodeProcess(...) を呼び出した後、何らかの理由で常に getExitCodeprocess(..) から値 1 を読み取りました。

Python コード:

def main():
    time.sleep(10)   
    logger.info("************The End**********")
    return (15)

if __name__ == "__main__":
    sys.exit(main())

C++ コード:

SHELLEXECUTEINFO rSEI = { 0 };
    rSEI.cbSize = sizeof(rSEI);
    //rSEI.lpVerb = "runas";
    rSEI.lpVerb = "open";
    rSEI.lpFile = "python.Exe";
    rSEI.lpParameters = LPCSTR(path.c_str());
    rSEI.nShow = SW_NORMAL;
    rSEI.fMask = SEE_MASK_NOCLOSEPROCESS;

    if (ShellExecuteEx(&rSEI))   // you should check for an error here
            ;
        else
            errorMessageID = GetLastError();        //MessageBox("Error", "Status", 0);

        WORD nStatus;
        MSG msg;     // else process some messages while waiting...
        while (TRUE)
        {
            nStatus = MsgWaitForMultipleObjects(1, &rSEI.hProcess, FALSE, INFINITE, QS_ALLINPUT);   // drop through on user activity 

            if (nStatus == WAIT_OBJECT_0)
            {  // done: the program has ended
                break;
            }

            while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
            {
                DispatchMessage(&msg);
                //MessageBox("Wait...", "Status", 0);
            }

        }  // launched process has exited

        DWORD dwCode=0;
        if (!GetExitCodeProcess(rSEI.hProcess, &dwCode)) //errorvalue
        {
            DWORD lastError = GetLastError();
        }

このコードでは、15 で終了する Python スクリプトとして、GetExitCodeProcess(rSEI.hProcess, &dwCode) から dwCode から 15 を読み取ることを期待していますか?

これに関するあなたのすべての助けに感謝します...

4

1 に答える 1