扫描系统进程和获取某进程的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("
CreateToolhelp32Snapshot() 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("
");
25         }
26         while (Process32Next(hprocessShap, &pe32));
27     }
28     else
29     {
30         printf("
Process32First() 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("
CreateToolhelp32Snapshot() 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("
Process32First() failed:%d", GetLastError());
31     }
32     CloseHandle(hprocessShap);
33     return 0;
34 }
谦谦君子,卑以自牧
原文地址:https://www.cnblogs.com/QKSword/p/8343870.html