c++ win32 遍历进程列表

摘要:
EnumProcesses(aProcesses,sizeof(aProcesss),&cbNeeded){return1;}cProcesses=cbNeed/sizeof(DWORD);对于(i=0;i˂cProcesses;i++){if(aProcesses[i]!=0){DWORDpid=aProcesses[i];TCHARszProcessName[MAX_PATH]=TEXT(“???”=hProcess){HMODULEhMod;DWORDcbNeeded;if(EnumProcessModules(hProcess,&hMod,sizeof(hMod),&cbNeeded)){GetModuleBaseName(hProcess、hMod、szProcessName、sizeof(szProcessName)/sizeof(TCHAR));}printf(“PID:%X%ls”,PID,szProcessName);CloseHandle(hProcess);}}return0;}

c++ win32 遍历进程列表第1张

使用 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;
}

免责声明:文章转载自《c++ win32 遍历进程列表》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇综合而强大的DATASNAPACE_Message_Block实现浅析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

assert()函数用法总结

assert()函数用法总结assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include <assert.h>void assert( int expression );   assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向s...

Qt之OpenSSL

简述 OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。 简述 下载安装 使用 更多参考 下载安装 进入Win32 OpenSSL下载页面,选择适合自己的版本进行下载。 下载完成之后进行安装,我选择的目录为D:Program FilesOpenSSL-...

rootkit:实现隐藏进程

实现隐藏进程一般有两个方法: 1,把要隐藏的进程PID设置为0,因为系统默认是不显示PID为0的进程。 2,修改系统调用sys_getdents()。 Linux系统中用来查询文件信息的系统调用是sys_getdents,这一点可以通过strace来观察到,例如strace ls 将列出命令ls用到的系统调用,从中可以发现ls是通过getdents系统调用...

Qt之读取配置文件

一、读取配置文件增删功能与修改参数数据 1 #ifndef CONFIG_H 2 #define CONFIG_H 3 4 #define QS_FILEPATH "E:\woo\Code\Qt\APP_002_READCONF\config.ini" 5 6 #endif //CONFIG_H View Code 1 #ifndef MAINW...

Qt5 任务栏托盘功能实现

23333 有一阵子没写博客了,研究了挺长时间qt,学到任务栏托盘时简直无语,网上找得到的代码大多是废码,Qt5不支持或者本身就有毛病不能实现却被n多人转来转去的,甚是无语。 简单托盘功能以下在Qt5.5编译通过: #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow>...

java调用dll(native方法的实现)

java 中有许多native 方法,下面简单研究下native 方法的实现以及在java 中调用native 方法。 下面以简单的操作加减乘除实现 1. 新建java 类 源码如下: packagecom.zd.bx; public classOperation { public native int add(int a, intb);} 2...