QQ登录

只需一步,快速开始

上位机MFC枚举获取进程全部信息源代码

[ 复制链接 ]

上位机MFC枚举获取进程全部信息源代码

上位机MFC枚举获取进程全部信息源代码


请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:上位机MFC枚举获取进程全部信息源代码.rar 
文件大小:61.6 KB  售价:1金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


  

上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例

  

经历1年的编程与录制点击进入查看


  

halcon从自学到接项目视频教程,另外再赠送全网最全资源  

  

欢迎围观我录制的一套halcon自学视频教程(进入)


  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  


获取进程模块的信息
一、实现原理:
  首先通过CreateToolhelp32Snapshot函数创建一个进程的快照,
然后通过调用Process32First使用快照返回的句柄对进程进行遍历,
相关的信息存放在PROCESSENTRY32结构类型的实例中,
通过调用内部的一个函数GetProcessModule,
获取对应的进程的模块名称,然后通过对进程地址空间信息的读取,
从而获取相应的线程的ID等的信息。

二、主要实现代码:
获取进程地址空间内的相关信息:
hProcess = OpenProcess (PROCESS_ALL_ACCESS,
FALSE, pe32.th32ProcessID);
pfGetProcessMemoryInfo(hProcess,pmc,sizeof(pmc));
获取进程的模块信息:
  1. BOOL CEmuteFileDlg::GetProcessModule(DWORD dwPID, DWORD dwModuleID, LPMODULEENTRY32 lpMe32, DWORD cbMe32)
  2. {
  3.     BOOL          bRet        = FALSE;
  4.     BOOL          bFound      = FALSE;
  5.     HANDLE        hModuleSnap = NULL;
  6.     MODULEENTRY32 me32        = {0};
  7.     // Take a snapshot of all modules in the specified process.
  8.     hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID);
  9.         //hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, dwPID);
  10.     if (hModuleSnap == INVALID_HANDLE_VALUE)
  11.         return (FALSE);
  12.     // Fill the size of the structure before using it.
  13.     me32.dwSize = sizeof(MODULEENTRY32);
  14.     // Walk the module list of the process, and find the module of
  15.     // interest. Then copy the information to the buffer pointed
  16.     // to by lpMe32 so that it can be returned to the caller.
  17.     if (Module32First(hModuleSnap, &me32))
  18.     {
  19.         do
  20.         {
  21.             if (me32.th32ModuleID == dwModuleID)
  22.             {
  23.                 CopyMemory (lpMe32, &me32, cbMe32);
  24.                 bFound = TRUE;
  25.             }
  26.         }
  27.         while (!bFound && Module32Next(hModuleSnap, &me32));

  28.         bRet = bFound;   // if this sets bRet to FALSE, dwModuleID
  29.                          // no longer exists in specified process
  30.     }
  31.     else
  32.         bRet = FALSE;           // could not walk module list
  33.     // Do not forget to clean up the snapshot object.
  34.     CloseHandle (hModuleSnap);
  35.     return (bRet);
  36. }
复制代码



具体内容还是看代码吧!
使用环境:win2k advance server + vc6.0 + vs5



回复

使用道具 举报

快速回复 返回列表 客服中心 搜索