shansun123 发表于 2013-2-5 02:34:58

C++如何获取系统进程列表

 
PROCESSENTRY32 pe32;// 在使用这个结构之前,先设置它的大小pe32.dwSize = sizeof(pe32); // 给系统内的所有进程拍一个快照HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if(hProcessSnap == INVALID_HANDLE_VALUE){printf(" CreateToolhelp32Snapshot调用失败! \n");return;}// 遍历进程快照,轮流显示每个进程的信息BOOL bMore = ::Process32First(hProcessSnap, &pe32);while(bMore){printf(" 进程名称:%s \n", pe32.szExeFile);printf(" 进程ID号:%u \n\n", pe32.th32ProcessID);bMore = ::Process32Next(hProcessSnap, &pe32);}// 不要忘记清除掉snapshot对象::CloseHandle(hProcessSnap);char a;std::cin >> a;return; 
注:我在VS2008调试该程序的时候,输出的进程名称总是名称的第一个字符,眼看%s也对啊,后来看了下pe32,szExeFile的数据类型是WCHAR数组,这是因为VS2008默认的字符集是Unicode,只要在工程属性里做如下设置: 配置属性 --> 常规 --> 将“字符集 ”改为未设置 即可。
页: [1]
查看完整版本: C++如何获取系统进程列表