本文介绍了从进程ID(Win32)获取进程名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要获取Windows系统上所有进程的列表,包括名称和PID.
EnumProcess 可以获取PID列表,但是如何从pid获取进程名称?我不想在该进程上调用OpenProcess,因为它并不总是起作用(就像其他进程是由其他用户运行一样).
I need to get a list of all processes on a windows system including names and PID.
EnumProcess can obtain a list of pids, but how do I get the process name from the pid? I don't want to call OpenProcess on the process as that doesn't always work (like if the other process is run by a different user).
推荐答案
您可以使用 ToolHelp API.
以下代码将显示每个进程的pid
和name
.
Ýou can get the process identifier and name
for all running processes using the ToolHelp API.
The following code will display the pid
and name
for each process.
void showProcessInformation() {
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hSnapshot) {
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(PROCESSENTRY32);
if(Process32First(hSnapshot, &pe32)) {
do {
printf("pid %d %s\n", pe32.th32ProcessID, pe32.szExeFile);
} while(Process32Next(hSnapshot, &pe32));
}
CloseHandle(hSnapshot);
}
}
这篇关于从进程ID(Win32)获取进程名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!