0

我需要找到一个进程的 ID,我只有它的名称,我知道一次只有 1 个实例会运行,所以多个进程与我正在寻找的同名进程不会有问题为了。

如果有人能解释我如何从进程的名称中获取进程的 ID,我将不胜感激 - 并且代码示例会很棒。

4

2 回答 2

2

从你的其他问题来看(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
于 2013-01-05T21:51:15.457 回答
0

在 *nix 环境中,man 3 sysctl.

于 2013-01-05T21:52:23.260 回答