扫描系统进程和获取某进程的PID

Posted QKSword

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了扫描系统进程和获取某进程的PID相关的知识,希望对你有一定的参考价值。

 

扫描系统的所有进程

 1 #include <stdio.h>
 2 #include <windows.h>
 3 #include <tlhelp32.h>
 4 
 5 int scan()
 6 {
 7     HANDLE            hprocessShap = NULL;
 8     PROCESSENTRY32    pe32         = {0};
 9     hprocessShap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
10 
11     if(hprocessShap == INVALID_HANDLE_VALUE)
12     {
13         printf("\nCreateToolhelp32Snapshot() failed:%d", GetLastError());
14         return 1;
15     }
16 
17     pe32.dwSize = sizeof(PROCESSENTRY32);
18 
19     if(Process32First(hprocessShap, &pe32))
20     {
21         do
22         {
23             wprintf(pe32.szExeFile);
24             printf("\n");
25         }
26         while (Process32Next(hprocessShap, &pe32));
27     }
28     else
29     {
30         printf("\nProcess32First() failed:%d", GetLastError());
31     }
32     CloseHandle(hprocessShap);
33     return 0;
34 }
35 
36 int main(int argc, char *argv)
37 {
38     scan();
39     return 0;
40 }

 

 获取某进程的PID

 

有时候在对系统某个进程进行操作时,我们需要获取程序的PID作为参数。其中一个方法当然是在任务管理器的详细信息里寻找,另外一个方法就是通过代码获取到进程的PID直接利用

 1 int getpid(wchar_t *name)
 2 {
 3     HANDLE            hprocessShap = NULL;
 4     //存放快照进程信息的结构体
 5     PROCESSENTRY32    pe32         = {0};        
 6     //对系统的进程建立一个快照进行扫描
 7     hprocessShap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
 8     if(hprocessShap == INVALID_HANDLE_VALUE)
 9     {
10         printf("\nCreateToolhelp32Snapshot() failed:%d", GetLastError());
11         return 1;
12     }
13     //设置结构体的大小
14     pe32.dwSize = sizeof(PROCESSENTRY32);
15     //Process32First获得第一个进程的句柄
16     if(Process32First(hprocessShap, &pe32))
17     {
18         //匹配输入的进程名
19         do
20         {
21             if(!wcscmp(name, pe32.szExeFile))
22             {
23                 return (int)pe32.th32ProcessID;
24             }
25         }
26         while (Process32Next(hprocessShap, &pe32));
27     }
28     else
29     {
30         printf("\nProcess32First() failed:%d", GetLastError());
31     }
32     CloseHandle(hprocessShap);
33     return 0;
34 }

 

以上是关于扫描系统进程和获取某进程的PID的主要内容,如果未能解决你的问题,请参考以下文章

Qt扫描进程列表以及获取进程信息

Qt 扫描进程列表以及获取进程信息

linux下如何获取某一进程占用的物理内存和虚拟内存

如何从 iOS 系统上的进程 pid 中获取其他应用程序图标?

Linux系统调用:获取进程PID

ls显示所有java进程的pid命令