1

MFC でアプリケーションを作成しました (App1 と言います)。そして app1 から、別のアプリケーション app2 を app1 から呼び出しました。として呼んだ

CString szCmdline = "app2.exe";
BOOL ret= CreateProcess( NULL,
                szCmdline.GetBuffer(szCmdline.GetLength()),    // application name with parameter
                NULL,          // process security attributes
                NULL,          // primary thread security attributes
                TRUE,          // handles are inherited
                0,              //DETACHED_PROCESS, // creation flags
                NULL,          // use parent's environment
                NULL,           // use parent's current directory
                &siStartInfo,  // STARTUPINFO pointer
                &piProcInfo);  // receives PROCESS_INFORMATION
    if(ret)
    {
                return;

    } else 
    {
        return;
    }


}

App2 が戻らないようにアプリケーション app1 を終了させたい。

4

3 に答える 3

3

最初に親プロセスIDを取得してから、次のように親プロセスを終了する必要があります。

DWORD crtpid= GetCurrentProcessId();// プロセスを作成する前に現在のプロセス ID を取得する

プロセスを作成した後、プロセスID(crtpid)を使用して親プロセスを閉じることができます

HANDLE hProc = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, crtpid);

if (hProc)
{
    ::TerminateProcess(hProc, 1);
    ::CloseHandle(hProc);
} 
于 2013-10-22T08:07:00.287 に答える
0

App2 の起動後に App1 を終了する場合は、 App1 内からPostQuitMessageを呼び出すだけです。これは、アプリにクリーンアップの機会を提供するため、アプリケーションをシャットダウンするよりクリーンな方法です。

于 2013-10-22T13:16:04.017 に答える