【進程】
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 閱讀(835)
評論(0) 編輯 收藏 引用 所屬分類:
Windows Mobile