【进程】
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
4HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
5
6if (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
26TCHAR 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
39CloseToolhelp32Snapshot(hSnapshot);
40
41}
42
【模块】
已知进程ID,便可获得对应各模块的信息。在此介绍了如何获得模块的信息。
数据结构
代码示例
1MODULEENTRY32 me; // 定义模块对象
2me.dwSize = sizeof(me);
3// 创建对应进程的模块快照
4HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pe.th32ProcessID);
5if (INVALID_HANDLE_VALUE != handle)
6{
7// 先搜索系统中第一个模块的信息
8Module32First(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// 关闭快照
19CloseToolhelp32Snapshot(handle);
20 }
21
posted on 2009-07-03 15:57
Sandy 阅读(817)
评论(0) 编辑 收藏 引用 所属分类:
Windows Mobile