在Windows Mobile和Wince(Windows Embedded CE)下进行Win32开发,取出当前所有运行中进程信息的方法
2009-11-19 07:56
781 查看
寇平 同学问我使用Native C++开发时如何在取出进程下窗口的句柄,因为取进程下窗口句柄需要用到进程信息,我先总结出如何取出当前所有运行进程信息的方法。
因为需要用到CreateToolhelp32Snapshot,Process32First和Process32Next来查询进程信息。
这是本文的重点,我把查询到的进行信息放到一个全局的list里面去了,可能封装为对象。
把进程信息打印到控制台去,由于Windows Mobile没有控制台,显示方法会不一样,但是都是从list(processes)中读出来显示。
完成了,运行效果如下:
上面的代码参考了http://geekswithblogs.net/BruceEitman/archive/2008/05/14/windows-ce--using-toolhelpapi-to-list-running-processes.aspx
之前我也写过一篇在.NET Compact Framework下如何管理进程的文章,可以参考
在Windows Mobile和Wince(Windows Embedded CE)下如何使用.NET Compact Framework开发进程管理程序
下一篇讲述 在Windows Mobile和Wince(Windows Embedded CE)下进行Win32开发,取出窗口句柄的方法
1.引用Tlhelp32.h文件
#include "Tlhelp32.h"
因为需要用到CreateToolhelp32Snapshot,Process32First和Process32Next来查询进程信息。
2.轮询进程信息
void GetRunningProcesses() { processes.clear(); HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //Do a little error handling, just in case. if(hSnapShot == (HANDLE)-1) { wprintf(TEXT("GetRunningProcesses: Failed CreateToolhelp32Snapshot Error: %d\n"), GetLastError()); return; } PROCESSENTRY32 process; process.dwSize = sizeof(PROCESSENTRY32); BOOL retval = Process32First(hSnapShot, &process); while(retval) { processes.push_back(process); retval = Process32Next(hSnapShot, &process); } //Always good to close those handles. Then return the number of processes that we found. CloseToolhelp32Snapshot (hSnapShot); }
这是本文的重点,我把查询到的进行信息放到一个全局的list里面去了,可能封装为对象。
#include <list> std::list<PROCESSENTRY32> processes;
3.显示进程信息
void ShowRunningProcesses() { GetRunningProcesses(); DWORD maxProcessNameLength = GetMaxProcessNameLength(); // Output a header to describe each column wprintf(TEXT("%-*s %8s %13s %9s %9s %10s\n"), maxProcessNameLength, TEXT("Process"), TEXT("PID"), TEXT("Base Priority"), TEXT("# Threads"), TEXT("Base Addr"), TEXT("Access Key") ); // Output information for each running process for( std::list<PROCESSENTRY32>::iterator it=processes.begin(); it!=processes.end(); ++it) { wprintf(TEXT("%-*s %8X %13d %9d %9X %10X\n"), maxProcessNameLength, it->szExeFile, it->th32ProcessID, it->pcPriClassBase, it->cntThreads, it->th32MemoryBase, it->th32AccessKey ); } } DWORD GetMaxProcessNameLength() { DWORD maxLength = 0; DWORD currentLength; for( std::list<PROCESSENTRY32>::iterator it=processes.begin(); it!=processes.end(); ++it) { currentLength = wcslen( it->szExeFile ); if( maxLength < currentLength ) { maxLength = currentLength; } } return maxLength; }
把进程信息打印到控制台去,由于Windows Mobile没有控制台,显示方法会不一样,但是都是从list(processes)中读出来显示。
4.链接toolhelp.lib
完成了,运行效果如下:
上面的代码参考了http://geekswithblogs.net/BruceEitman/archive/2008/05/14/windows-ce--using-toolhelpapi-to-list-running-processes.aspx
之前我也写过一篇在.NET Compact Framework下如何管理进程的文章,可以参考
在Windows Mobile和Wince(Windows Embedded CE)下如何使用.NET Compact Framework开发进程管理程序
下一篇讲述 在Windows Mobile和Wince(Windows Embedded CE)下进行Win32开发,取出窗口句柄的方法
相关文章推荐
- 在Windows Mobile和Wince(Windows Embedded CE)下进行Win32开发,取出窗口句柄的方法
- 在Windows Mobile和Wince(Windows Embedded CE)下进行Native C++开发,如何取出当前执行文件的路径和调用模块的路径
- 在Windows Mobile和Wince(Windows Embedded CE)下进行Native C++开发,如何取出资源文件中的版本信息
- 在Windows Mobile和Wince(Windows Embedded CE)下使用.NET Compact Framework 取当前运行文件的路径
- 在Windows Mobile和Wince(Windows Embedded CE)下使用.NET Compact Framework进行GPS NMEA data数据分析的开发
- 在Windows Mobile和Wince(Windows Embedded CE)下如何使用.NET Compact Framework开发进程管理程序
- 在Windows Mobile和Wince(Windows Embedded CE)下使用.NET Compact Framework进行GPS NMEA data数据分析的开发
- 在Windows Mobile和Wince(Windows Embedded CE)下进行WTL开发,如何加入超链接(HyperLink)
- 在Windows Mobile和Wince(Windows Embedded CE)下如何使用.NET Compact Framework开发进程管理程序
- 开发Windows Mobile和Wince(Windows Embedded CE)的部署项目(Deploy Project)时,如何修改注册表
- Windows Mobile和Wince(Windows Embedded CE)下的WTL(Windows Template Library)开发
- Windows Mobile 和 Wince(Windows Embedded CE) 下的 WTL(Windows Template Library) 界面(UI)开发
- windows mobile进程查看器开发(一)——获得当前运行进程的信息
- 在Windows Mobile和Wince(Windows Embedded CE)下Win32项目加入ATL支持
- 在Windows Mobile和Wince(Windows Embedded CE)下进行Native C++时间函数的运用
- Windows Mobile和Wince(Windows Embedded CE)下如何封装Native DLL提供给.NET Compact Framework进行调用
- Windows Mobile和Wince(Windows Embedded CE )下使用.NET Compact Framework下注册表导出工具的开发
- Windows Mobile 和 Wince(Windows Embedded CE) 下的 WTL(Windows Template Library) 界面(UI)开发
- 一文讲清楚Windows Mobile和Wince(Windows Embedded CE)的字符集问题
- 一文讲清楚Windows Mobile和Wince(Windows Embedded CE)的字符集问题