1

我在 MFC 中创建了应用程序(说 App1)。从 app1,我从 app1 调用了另一个应用程序 app2。我叫作

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;
    }


}

我希望应用程序 app1 退出而不让 App2 返回;

4

3 回答 3

3

首先,您应该获取父进程 ID,然后按如下方式终止父进程。

DWORD crtpid= GetCurrentProcessId();//创建进程前获取当前进程id

创建进程后,您可以使用其进程 ID(crtpid)关闭父进程

处理 hProc = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, crtpid);

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

你有没有尝试!

ExitProcess(0)

语法:

VOID WINAPI ExitProcess(
  _In_  UINT uExitCode
);

评论:

使用GetExitCodeProcess函数检索进程的退出值。使用GetExitCodeThread函数检索线程的退出值。

于 2013-10-22T07:16:42.840 回答
0

如果您想在启动 App2 后终止 App1,您可以简单地从 App1 中调用PostQuitMessage 。这是关闭应用程序的一种更简洁的方式,因为它为应用程序提供了清理的机会。

于 2013-10-22T13:16:04.017 回答