首页 > 解决方案 > 在 C++ 中打开特定应用程序后如何关闭它?

问题描述

因此,在我的代码中,我使用 ShellExecute 打开例如记事本,之后我想关闭它,但我找不到任何工作方式,所以我的问题是,使用 c++ 代码关闭特定应用程序的最简单方法是什么?

#include <iostream>
#include <Windows.h>

int main()
{

    ShellExecute(NULL, "open", "notepad", NULL, NULL, SW_SHOWDEFAULT);

    Sleep(10000);

    //here I'm missing the part that closes previously opened notepad

    return 0;

}

标签: c++winapi

解决方案


您可以使用ShellExecuteExwith SEE_MASK_NOCLOSEPROCESS,然后您可以将其作为参数传递给TerminateProcess函数。

这是一个示例:

#include <windows.h>

int main()
{
    SHELLEXECUTEINFO lpExecInfo{};
    lpExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
    lpExecInfo.lpFile = L"notepad.exe";
    lpExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
    lpExecInfo.hwnd = NULL;
    lpExecInfo.lpVerb = NULL;
    lpExecInfo.lpParameters = NULL;
    lpExecInfo.lpDirectory = NULL;
    lpExecInfo.nShow = SW_SHOWNORMAL;
    ShellExecuteEx(&lpExecInfo);

    Sleep(3000);
    if (lpExecInfo.hProcess)
    {
        TerminateProcess(lpExecInfo.hProcess, 0);
        CloseHandle(lpExecInfo.hProcess);
    }
    return 0;
}

推荐阅读