zoukankan      html  css  js  c++  java
  • 扫描系统进程和获取某进程的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 }
    谦谦君子,卑以自牧
  • 相关阅读:
    语音激活检测(VAD)--前向神经网络方法(Alex)
    语音信号处理基础
    MySQL死锁系列-插入语句正常,但是没有插入成功
    关于wx.getProfile和wx.login获取解密数据偶发失败的原因
    指针访问数组元素
    libev 源码解析
    leveldb 源码--总体架构分析
    raft--分布式一致性协议
    使用springcloud gateway搭建网关(分流,限流,熔断)
    爬虫
  • 原文地址:https://www.cnblogs.com/QKSword/p/8343870.html
Copyright © 2011-2022 走看看