我需要找到一个进程的 ID,我只有它的名称,我知道一次只有 1 个实例会运行,所以多个进程与我正在寻找的同名进程不会有问题为了。
如果有人能解释我如何从进程的名称中获取进程的 ID,我将不胜感激 - 并且代码示例会很棒。
我需要找到一个进程的 ID,我只有它的名称,我知道一次只有 1 个实例会运行,所以多个进程与我正在寻找的同名进程不会有问题为了。
如果有人能解释我如何从进程的名称中获取进程的 ID,我将不胜感激 - 并且代码示例会很棒。
从你的其他问题来看(RegSetValueEx
在标题中有点明显),我假设你在 Windows 上。对于纯 Windows API 解决方案,您可以使用 Toolhelp32 API 来查看正在运行的进程的快照,并将它们的名称与您要查找的名称进行比较。您只有一个名称的注释,但将来或对其他人来说,拥有该名称的所有 PID 可能会有所帮助,所以我会这样做:
std::vector<DWORD> pids;
HANDLE snap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //all processes
PROCESSENTRY32W entry; //current process
entry.dwSize = sizeof entry;
if (!Process32FirstW(snap, &entry)) { //start with the first in snapshot
return 0;
}
do {
if (std::wstring(entry.szExeFile) == wantedProcessName) {
pids.emplace_back(entry.th32ProcessID); //name matches; add to list
}
} while (Process32NextW(snap, &entry)); //keep going until end of snapshot
在 *nix 环境中,man 3 sysctl
.