一、实现原理:
首先通过CreateToolhelp32Snapshot函数创建一个进程的快照,然后通过调用Process32First使用快照返回的句柄对进程进行遍历,相关的信息存放在PROCESSENTRY32结构类型的实例中,通过调用内部的一个函数GetProcessModule,获取对应的进程的模块名称,然后通过对进程地址空间信息的读取,从而获取相应的线程的ID等的信息。
二、主要实现代码:
获取进程地址空间内的相关信息:
hProcess = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);
pfGetProcessMemoryInfo(hProcess,pmc,sizeof(pmc));
获取进程的模块信息函数:
BOOL CEmuteFileDlg::GetProcessModule(DWORD dwPID, DWORD dwModuleID,
LPMODULEENTRY32 lpMe32, DWORD cbMe32)
具体细节内容还是看代码吧!
三、后记:
我感觉信息获取的不够完整,比如说,我很想知道怎么才能获取进程的线程的模块名称,不知道那位大侠不吝赐教!
使用环境:win2k advance server + vc6.0 + vs5
[代码性质]
VC完整应用程序代码
[代码作者] taishan_sword
[文件大小] 48K
[更新日期] 2004-1-8 23:38:00
[下载次数] 5241
--------------------next---------------------
阅读(298) | 评论(0) | 转发(0) |