列举进程

  HANDLE SnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
   if(SnapShot==NULL)
   {
    MessageBox("检测当前进程失败!");
    return FALSE;
   }
   SHFILEINFO shSmall;
   int nIndex;
   CString str,prcnum;
   PROCESSENTRY32 ProcessInfo;//声明进程信息变量
   ProcessInfo.dwSize=sizeof(ProcessInfo);//设置ProcessInfo的大小
   //返回系统中第一个进程的信息
   BOOL Status=Process32First(SnapShot,&ProcessInfo);
   int m_nProcess=0,num=0;
   while(Status)
   {
    m_nProcess++;
    num++;
    //获取进程文件信息
    SHGetFileInfo(ProcessInfo.szExeFile,0,&shSmall,
     sizeof(shSmall),SHGFI_ICON|SHGFI_SMALLICON);
    //在列表控件中添加映像名称
    nIndex=m_list.InsertItem(m_nProcess,ProcessInfo.szExeFile);
    //获取下一个进程的信息
    Status=Process32Next(SnapShot,&ProcessInfo);
   }

在winxp下ProcessInfo.szExeFile只能得到进程的名字,要想得到进程的路径,可用下面的函数得到

BOOL GetProcessModule(DWORD dwPID,DWORD dwModuleID,LPMODULEENTRY32 lpMe32,DWORD cbMe32)    
{    
 BOOL bRet=FALSE;    
 BOOL bFound=FALSE;    
 HANDLE hModuleSnap=NULL;    
 MODULEENTRY32 me32={0};        
 hModuleSnap=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID);    
 if(hModuleSnap==(HANDLE)-1)    
  return(false);      
 me32.dwSize=sizeof(MODULEENTRY32);        
 if(Module32First(hModuleSnap,&me32))    
 {    
  do    
  {    
   if(me32.th32ModuleID==dwModuleID)    
   {    
    CopyMemory(lpMe32,&me32,cbMe32);    
    bFound=true;    
   }    
  }    
  while(!bFound&&Module32Next(hModuleSnap,&me32));      
  bRet=bFound;     
 }    
 else    
  bRet=false;     
 CloseHandle(hModuleSnap);      
 return(bRet);    
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值