c++判断aaaexe是否在运行
可以通过以下步骤来判断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/gBNq 著作权归作者所有。请勿转载和采集!