Windows Mobile中进程和模块信息的获取

Windows Mobile中进程和模块信息的获取

【进程】

    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
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,便可获得对应各模块的信息。在此介绍了如何获得模块的信息。

数据结构



代码示例

 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// 先搜索系统中第一个模块的信息
 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

你可能感兴趣的:(Windows Mobile中进程和模块信息的获取)