C++ 检查 EXE 文件是否正在运行

可以使用以下两种方法判断一个 EXE 文件是否在运行:

  1. 使用 Windows API 函数 EnumProcesses() 列出当前正在运行的所有进程,判断目标 EXE 文件的进程 ID 是否在其中。

  2. 使用 Windows API 函数 CreateToolhelp32Snapshot()Process32First()Process32Next() 函数列出当前正在运行的所有进程,判断目标 EXE 文件的进程名是否在其中。

以下是一个使用第二种方法的示例代码:

#include <iostream>
#include <windows.h>
#include <tlhelp32.h>  // 需要包含此头文件

using namespace std;

bool IsProcessRunning(const char* processName) {
    bool result = false;

    // 创建进程快照
    HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (snapshot == INVALID_HANDLE_VALUE) {
        return false;
    }

    // 遍历进程快照
    PROCESSENTRY32 entry;
    entry.dwSize = sizeof(PROCESSENTRY32);
    if (Process32First(snapshot, &entry)) {
        do {
            if (strcmp(entry.szExeFile, processName) == 0) {  // 判断进程名是否匹配
                result = true;
                break;
            }
        } while (Process32Next(snapshot, &entry));
    }

    // 关闭进程快照句柄
    CloseHandle(snapshot);

    return result;
}

int main() {
    if (IsProcessRunning('notepad.exe')) {
        cout << 'Notepad is running.' << endl;
    } else {
        cout << 'Notepad is not running.' << endl;
    }

    return 0;
}

注意:

  • 在使用 CreateToolhelp32Snapshot() 函数之前,需要包含头文件 <tlhelp32.h>
  • 以上代码示例使用 notepad.exe 作为目标进程,您可以根据需要修改该名称。
  • 该方法仅限于 Windows 平台,其他平台可能需要使用不同的方法。
C++ 检查 EXE 文件是否正在运行

原文地址: https://www.cveoy.top/t/topic/owGD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录