C++ 判断 AAA.exe 是否正在运行
可以通过以下步骤来判断 aaa.exe 是否在运行:
-
使用 Windows API 函数 EnumProcesses() 获取所有正在运行的进程 ID。
-
使用 Windows API 函数 OpenProcess() 打开 AAA.exe 进程,并获取其进程句柄。
-
使用 Windows API 函数 EnumProcessModules() 获取 AAA.exe 进程中的所有模块。
-
使用 Windows API 函数 GetModuleBaseName() 获取每个模块的名称,并与 'AAA.exe' 进行比较,如果匹配则证明 AAA.exe 正在运行。
-
如果找到 AAA.exe 进程,则使用 Windows API 函数 CloseHandle() 关闭进程句柄。
以下是示例代码:
#include <windows.h>
#include <psapi.h>
#include <iostream>
bool isProcessRunning(const char* processName)
{
DWORD processes[1024], bytesNeeded;
if (!EnumProcesses(processes, sizeof(processes), &bytesNeeded)) {
return false;
}
DWORD count = bytesNeeded / sizeof(DWORD);
for (DWORD i = 0; i < count; i++) {
HANDLE processHandle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processes[i]);
if (processHandle) {
HMODULE module;
DWORD bytesNeeded;
if (EnumProcessModules(processHandle, &module, sizeof(module), &bytesNeeded)) {
char moduleName[MAX_PATH];
if (GetModuleBaseName(processHandle, module, moduleName, sizeof(moduleName) / sizeof(char))) {
if (_stricmp(moduleName, processName) == 0) {
CloseHandle(processHandle);
return true;
}
}
}
CloseHandle(processHandle);
}
}
return false;
}
int main()
{
if (isProcessRunning("AAA.exe")) {
std::cout << "AAA.exe is running." << std::endl;
} else {
std::cout << "AAA.exe is not running." << std::endl;
}
return 0;
}
原文地址: https://www.cveoy.top/t/topic/owFR 著作权归作者所有。请勿转载和采集!