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

如何用C++实现检测chrome.exe运行时自动关闭自身程序的功能

C++ 检测Chrome运行并自动退出程序实现方案

核心思路

通过Windows原生API枚举系统所有运行进程,匹配进程名是否为chrome.exe,匹配成功后直接终止当前程序自身。

依赖说明

需要引入Windows API头文件,编译时链接psapi.lib库。

完整可运行代码

#include <windows.h>
#include <psapi.h>
#include <string.h>
#include <cstdio>
#include <cctype>

// 字符串大小写不敏感比较
BOOL IsEqualIgnoreCase(const char* str1, const char* str2) {
    while (*str1 && *str2) {
        if (tolower(*str1) != tolower(*str2)) {
            return FALSE;
        }
        str1++;
        str2++;
    }
    return *str1 == *str2;
}

BOOL IsChromeRunning() {
    DWORD processes[1024], cbNeeded, processCount;
    // 枚举所有进程ID
    if (!EnumProcesses(processes, sizeof(processes), &cbNeeded)) {
        return FALSE;
    }
    processCount = cbNeeded / sizeof(DWORD);

    for (DWORD i = 0; i < processCount; i++) {
        if (processes[i] == 0) continue;

        // 打开进程获取查询权限
        HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processes[i]);
        if (hProcess != NULL) {
            HMODULE hMod;
            DWORD cbModNeeded;
            if (EnumProcessModules(hProcess, &hMod, sizeof(hMod), &cbModNeeded)) {
                char processName[MAX_PATH] = {0};
                GetModuleBaseNameA(hProcess, hMod, processName, sizeof(processName)/sizeof(char));
                if (IsEqualIgnoreCase(processName, "chrome.exe")) {
                    CloseHandle(hProcess);
                    return TRUE;
                }
            }
            CloseHandle(hProcess);
        }
    }
    return FALSE;
}

int main() {
    // 支持程序启动时检测一次,也可以放入定时器循环检测
    if (IsChromeRunning()) {
        printf("检测到Chrome正在运行,程序即将退出\n");
        // 退出当前程序,退出码可自定义
        ExitProcess(0);
    }

    // 你的正常业务逻辑
    printf("未检测到Chrome,程序正常运行\n");
    system("pause");
    return 0;
}

编译说明

如果你使用MSVC编译,可直接在代码中添加编译指令自动链接库,无需手动修改编译参数:

#pragma comment(lib, "psapi.lib")

注意事项

  • 仅适用于Windows平台,依赖Win32 API实现
  • 如需定时检测,可在业务逻辑中添加定时器,每隔指定时长调用一次IsChromeRunning()判断即可
  • 进程名做了大小写不敏感匹配,避免Chrome进程名大小写差异导致漏判

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:24:02