【进程】
Mobile 中的进程信息大体包含在PROCESSENTRY32结构中,我们可以获得进程的诸多信息,此处无法获得进程所占内存和CPU利用率。
数据结构
typedef struct tagPROCESSENTRY32 {
DWORD dwSize;
DWORD cntUsage;
DWORD th32ProcessID;
DWORD th32DefaultHeapID;
DWORD th32ModuleID;
DWORD cntThreads;
DWORD th32ParentProcessID;
LONG pcPriClassBase;
DWORD dwFlags;
TCHAR szExeFile[MAX_PATH];
DWORD th32MemoryBase;
DWORD th32AccessKey;
} PROCESSENTRY32;
typedef PROCESSENTRY32* PPROCESSENTRY32;
代码示例
1
2
// 创建快照句柄
3
4
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
5
6
if (INVALID_HANDLE_VALUE != hSnapshot)
7
8

{
9
10
// 先搜索系统中第一个进程的信息
11
12
Process32First(hSnapshot, &pe);
13
14
do
{
15
16
// 可通过pe获取指定的信息
17
18
//……
19
20
// 获取感兴趣的进程信息
21
22
//……
23
24
// 获取进程所在路径
25
26
TCHAR processPath[MAX_PATH]
27
28
HPROCESS hProcess = OpenProcess(0, FALSE, pe.th32ProcessID);
29
30
if (NULL != hProcess)
31
GetModuleFileName((HMODULE) hProcess, processPath, sizeof(processPath));
32
33
CloseHandle(hProcess);
34
35
}while ( Process32Next(hSnapshot, &pe));
36
37
// 关闭快照句柄
38
39
CloseToolhelp32Snapshot(hSnapshot);
40
41
}
42
【模块】
已知进程ID,便可获得对应各模块的信息。在此介绍了如何获得模块的信息。
数据结构

代码示例
1
MODULEENTRY32 me; // 定义模块对象
2
me.dwSize = sizeof(me);
3
// 创建对应进程的模块快照
4
HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pe.th32ProcessID);
5
if (INVALID_HANDLE_VALUE != handle)
6

{
7
// 先搜索系统中第一个模块的信息
8
Module32First(handle, &me);
9
do
{
10
// 获取模块信息
11
//……
12
// 获取感兴趣的模块信息
13
//……
14
15
// 获取模块所在路径
16
GetModuleFileName(me.hModule, me.szExePath, sizeof(me.szExePath));
17
}while (Module32Next(handle, &me));
18
// 关闭快照
19
CloseToolhelp32Snapshot(handle);
20
}
21
posted on 2009-07-03 15:57
Sandy 阅读(830)
评论(0) 编辑 收藏 引用 所属分类:
Windows Mobile