gpt4 book ai didi

c++ - 使用 C++ 检查一个特定进程是否在 Windows 上运行

转载 作者:可可西里 更新时间:2023-11-01 14:42:53 27 4
gpt4 key购买 nike

psapi 或 windows.h 中是否有任何函数来获取所需的进程'仅通过进程名称(例如:“chrome.exe”)运行而不获取所有进程。

编辑:

如果有人需要通过运行所有进程列表来获取所需的进程信息,我可以在此处粘贴我的代码。它在 xp 机器上运行并使用 vs 2008 编译。

我也找到了解决问题的方法!但是根据msdn该函数已经通过进程运行并检查没有扩展名的名称。很快它会搜索“chrome”并返回 chrome 列表。*

这个函数有一个很好的优势,它返回一个列表中的进程,它可能是一个 exe 可能与多个实例一起运行。缺点 需要 CLR,它运行速度比 psapi 函数慢,并且有额外的转换要求,例如 String^ 到 wchar 或 String(我没有测试过)

最佳答案

上面的答案适用于 win 8。这里没有 wstring 的东西和剥离路径

#include <tlhelp32.h>
DWORD FindProcessId(char* processName)
{
// strip path

char* p = strrchr(processName, '\\');
if(p)
processName = p+1;

PROCESSENTRY32 processInfo;
processInfo.dwSize = sizeof(processInfo);

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

Process32First(processesSnapshot, &processInfo);
if ( !strcmp(processName, processInfo.szExeFile) )
{
CloseHandle(processesSnapshot);
return processInfo.th32ProcessID;
}

while ( Process32Next(processesSnapshot, &processInfo) )
{
if ( !strcmp(processName, processInfo.szExeFile) )
{
CloseHandle(processesSnapshot);
return processInfo.th32ProcessID;
}
}

CloseHandle(processesSnapshot);
return 0;
}

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

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