gpt4 book ai didi

c++ - 如何使用 C++ 检查进程是否正在运行

转载 作者:行者123 更新时间:2023-12-01 14:46:19 36 4
gpt4 key购买 nike

如果一个进程未运行,我不应该显示某些上下文菜单选项?。我正在使用进程名称检查进程是否正在运行。

但问题是,进程名称在不同的 Windows 平台上显示方式不同。

即windows任务栏上的windows 64位进程名称是“applicationname.exe

某些 windows xp 机器显示与“applica~2.exe”相同的进程名称

请告诉我检查进程是否正在运行的一致方法?

我的开发环境是C++和Visual Studio 2010

   DWORD getProcessID(const std::wstring& processName)
{
PROCESSENTRY32 info;
info.dwSize = sizeof(info);

HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if ( snapshot == INVALID_HANDLE_VALUE )
return 0;

Process32First(snapshot, &info);
if ( !processName.compare(info.szExeFile) )
{
CloseHandle(snapshot);
return info.th32ProcessID;
}

while ( Process32Next(snapshot, &info) )
{
if ( !processName.compare(info.szExeFile) )
{
CloseHandle(snapshot);
return info.th32ProcessID;
}
}

CloseHandle(snapshot);
return 0;
}

最佳答案

EnumProcesses 是另一种枚举事件进程的方法。

不同的是你需要为PIDs分配空间,调用EnumProcesses,用PROCESS_QUERY_INFORMATION访问标志打开每个进程,然后调用GetProcessImageFileName 在它的句柄上进行比较。

关于c++ - 如何使用 C++ 检查进程是否正在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10638068/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com