积累系统性知识
积聚技术精华
  首页    个人中心    撰写积文    建立课题    订立目标    整理积文    管理课题    管理目标    技能Get    代码积累 
列举进程
error997 (error997)    2014-11-20 21:09:50      目标    课题
切换到: 纯代码  
   
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);     
}


转自 http://blog.csdn.net/y___y/article/details/1181474
(+0)技能Get

建议楼主:搜索关键字 |参考其他资源 |回复 |追问
  error997(error997):   个人中心    课题    目标    代码积累