C++ 检查 EXE 文件是否正在运行
C++ 检查 EXE 文件是否正在运行
可以使用以下两种方法判断一个 EXE 文件是否在运行:
-
使用 Windows API 函数
EnumProcesses()列出当前正在运行的所有进程,判断目标 EXE 文件的进程 ID 是否在其中。 -
使用 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 平台,其他平台可能需要使用不同的方法。
原文地址: https://www.cveoy.top/t/topic/owGD 著作权归作者所有。请勿转载和采集!