码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2018-01-25 00:29:50      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:直接   hot   sha   include   process   turn   fail   efi   ssi   

 

扫描系统的所有进程

 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

标签:直接   hot   sha   include   process   turn   fail   efi   ssi   

原文地址:https://www.cnblogs.com/QKSword/p/8343870.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!