zoukankan      html  css  js  c++  java
  • c++ win32 遍历进程列表

    使用 CreateToolhelp32Snapshot

    #include <iostream>
    #include <Windows.h>
    #include <TlHelp32.h>
    #include <Psapi.h>
    
    int main() {
      HANDLE hSnap = CreateToolhelp32Snapshot(PROCESS_ALL_ACCESS, 0);
      if (hSnap != INVALID_HANDLE_VALUE)
      {
        PROCESSENTRY32 pe;
        pe.dwSize = sizeof(pe);
        if (Process32First(hSnap, &pe))
        {
          do {
            printf("PID: %X	%ls
    ", pe.th32ProcessID, pe.szExeFile);
          } while (Process32Next(hSnap, &pe));
        }
      }
      CloseHandle(hSnap);
      return 0;
    }
    

    使用 EnumProcesses

    #include <iostream>
    #include <Windows.h>
    #include <TlHelp32.h>
    #include <Psapi.h>
    
    int main() {
      DWORD aProcesses[1024], cbNeeded, cProcesses;
      size_t i;
      if (!EnumProcesses(aProcesses, sizeof(aProcesses), &cbNeeded))
      {
        return 1;
      }
      cProcesses = cbNeeded / sizeof(DWORD);
      for (i = 0; i < cProcesses; i++)
      {
        if (aProcesses[i] != 0)
        {
          DWORD pid = aProcesses[i];
          TCHAR szProcessName[MAX_PATH] = TEXT("???");
          HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid);
          if (NULL != hProcess)
          {
            HMODULE hMod;
            DWORD cbNeeded;
            if (EnumProcessModules(hProcess, &hMod, sizeof(hMod), &cbNeeded))
            {
              GetModuleBaseName(hProcess, hMod, szProcessName, sizeof(szProcessName) / sizeof(TCHAR));
            }
          }
          printf("PID: %X	%ls
    ", pid, szProcessName);
          CloseHandle(hProcess);
        }
      }
      return 0;
    }
    
  • 相关阅读:
    MySQL sys Schema 简单介绍-2
    dubbo服务+Spring事务+AOP动态数据源切换 出错
    sql 查询优化
    spring事务-说说Propagation及其实现原理
    Redis 分布式锁
    三、操作符
    二、一切皆是对象
    一、对象导论
    SpringMVC工作原理
    数据库性能优化策略
  • 原文地址:https://www.cnblogs.com/ajanuw/p/14439105.html
Copyright © 2011-2022 走看看