You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C++关闭其他正在运行的应用程序?如txt文档、Chrome浏览器

方案可行性判断

  • ShellExecute(NULL, "open", "C://File Path" , NULL, NULL, SW_SHOWNORMAL) 是用于启动程序、打开文件/目录的Windows API,完全不具备关闭运行中进程/窗口的能力,该方案不可行。
  • 向目标窗口发送WM_CLOSE消息的方案可行,但需要先获取到目标窗口的句柄,不能直接调用SendMessage(WM_CLOSE)。

具体实现步骤

依赖说明

代码运行在Windows平台,需要引入头文件windows.h,编译时链接user32.lib(多数Windows开发环境会默认链接)。

核心逻辑

  1. 通过窗口类名遍历获取目标程序(记事本/Chrome)的窗口句柄
  2. 向每个目标窗口发送WM_CLOSE消息,触发程序正常退出流程

示例代码

#include <windows.h>

int main()
{
    HWND hWnd = NULL;

    // 关闭所有正在运行的记事本(txt默认打开程序)窗口
    while ((hWnd = FindWindowExW(NULL, hWnd, L"Notepad", NULL)) != NULL)
    {
        SendMessageW(hWnd, WM_CLOSE, 0, 0);
    }

    // 关闭所有正在运行的Chrome浏览器窗口
    while ((hWnd = FindWindowExW(NULL, hWnd, L"Chrome_WidgetWin_1", NULL)) != NULL)
    {
        SendMessageW(hWnd, WM_CLOSE, 0, 0);
    }

    return 0;
}

注意事项

  • 如果txt文件有未保存的内容,发送WM_CLOSE后会弹出保存确认弹窗,不会直接强制关闭。如果需要无提示强制关闭,可以先通过GetWindowThreadProcessId获取窗口对应进程ID,调用OpenProcess拿到进程句柄后用TerminateProcess强制结束进程,但该操作会丢失所有未保存数据,不推荐使用。
  • Chrome采用多进程架构,关闭所有顶层窗口后一般会自动退出全部后台进程,若存在残留可以遍历系统进程列表,结束所有名为chrome.exe的进程。

内容的提问来源于stack exchange,提问作者user15637411

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 04:24:03