#include <windows.h>
#include <tlhelp32.h>
#include <cstdio>
#include <iostream>
#include <psapi.h>
using std::wcout;
int main( )
{
// 设置本地字符集
setlocale( LC_ALL , "chs" );
system( "pause" );
// 1. 使用快照来遍历进程
// 1.1 创建进程快照
HANDLE hProcSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS , 0 );
if( INVALID_HANDLE_VALUE == hProcSnap ) {
printf( "创建进程快照失败\n" );
return 0;
}
//typedef struct tagPROCESSENTRY32W
//{
// DWORD dwSize; // 结构体大小
// DWORD cntUsage; /// 不使用
// DWORD th32ProcessID; // this process
// ULONG_PTR th32DefaultHeapID; /// 不使用
// DWORD th32ModuleID; /// 不使用
// DWORD cntThreads; // 进程的线程个数
// DWORD th32ParentProcessID; // 父进程ID
// LONG pcPriClassBase; // 进程优先级
// DWORD dwFlags; /// 不使用
// WCHAR szExeFile[ MAX_PATH ]; // 进程名
//} PROCESSENTRY32W;
PROCESSENTRY32 processInfo ;
// 初始化结构体的结构体字节字段
processInfo.dwSize = sizeof( processInfo );
// 获取第一个进程
Process32First( hProcSnap , &processInfo );
int i = 0;
BOOL bTrue = FALSE;
BOOL bRet = FALSE;
TCHAR path[MAX_PATH];
DWORD dwPathLengh = MAX_PATH;
HANDLE hProc;
do
{
hProc = OpenProcess(PROCESS_QUERY_INFORMATION,/*打开的进程的权限*/
FALSE, /*打开进程得到的句柄是否继承给子进程*/
processInfo.th32ProcessID /*要打开的进程的ID*/
);
// 判断进行是否是32进程
bRet = IsWow64Process(hProc,/*要判断的进程句柄*/
&bTrue/*输出值, 记录是否是32位进程,TRUE是32,FALSE为64*/
);
if (hProc == NULL)
bRet = FALSE;
// 将得到的进程信息输出
wprintf(L"[%d],进程ID:%04d,父进程ID:%04d,进程优先级:%d,进 程名:%s[*%s]\n",
i++, //第一个参数
processInfo.th32ProcessID, //第二个参数
processInfo.th32ParentProcessID, //第三个参数
processInfo.pcPriClassBase, //第四个参数
processInfo.szExeFile, //第五个参数
(bRet && bTrue) ? L"32" : L"64"); //第六个参数,用三目运算符表示
dwPathLengh = MAX_PATH;
//if(GetProcessImageFileName(hProc, path, MAX_PATH))
if (QueryFullProcessImageName(hProc, 0, path, &dwPathLengh))
{
wprintf(L"\t%s\n", path);
}
// 获取下一个进程
} while (Process32Next(hProcSnap, &processInfo));
system( "pause" );
}
遍历进程
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 参考http://blog.csdn.net/chaoyue1216/article/details/7609689
- 注:本文来自 左程云的书《程序员代码面试指南》 题目:分别用递归和非递归方法,实现二叉树的先序遍历(根左右)、中序...
- 2014年09月23日 9695 愿你纵深一跃,不惧深渊。愿风暴降临,你岸堤永固。愿人群声嘶力竭,呼喊你名。愿众人...