对于桌面开发而言,有时候我们需要查找某个进程,启动或者终止它,更或者进行进程守护,一旦进程终止,则重新启动。
这样以来,首先我们需要遍历所有进程。
DWORD aProcesses[ 1024 ];
DWORD cProcesses = GetProcessIDs( aProcesses, sizeof( aProcesses ) );
CString sName;
for( DWORD idx = 0; idx < cProcesses; idx++ ){
sName = GetProcessBaseModuleName( aProcesses[ idx ] );
if( sName.IsEmpty() ){
continue;
}
//做一些操作
}
我们通过GetProcessIDs来获取所有的进程ID,同时通过GetProcessBaseModuleName来获取进程名称。
记住,在64位的机器上,如果是32位的程序遍历进程,那么你将只能得到32位进程的名称等信息,64位的将无法得到。
见我的另外一篇文章:EnumProcessModules失败的问题。
文章评论