取进程管理器中的进程路径

void CPathDlg::OnBnClickedOk()
{
 
 DWORD dwStyle;
 m_list.DeleteAllItems ();


 CHeaderCtrl *ch = m_list.GetHeaderCtrl();
 int nColumnCount = ch->GetItemCount();
 // Delete all of the columns.
 for (int i=0;i < nColumnCount;i++)
 {
    m_list.DeleteColumn(0);
 }

 dwStyle = m_list.GetStyle();
 dwStyle = LVS_EX_GRIDLINES |LVS_EX_FULLROWSELECT;
 
 m_list.SetTextBkColor(RGB(0xfe,0xFF,0xc6));

 m_list.InsertColumn(0,_T("EXE"));
 m_list.SetColumnWidth(0 ,120);
 m_list.InsertColumn(1,_T("PATH"));
 m_list.SetColumnWidth(1 ,350);
 m_list.SetExtendedStyle(dwStyle);
 m_list.SetBkColor(RGB(0xec,0xf1,0xfd));
 FindProc();

 

}


BOOL CPathDlg::FindProc()
{
 PROCESSENTRY32 ProcEntry;  
 BOOL isExist(0);  
 HANDLE hproc = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
 memset(&ProcEntry, 0, sizeof(ProcEntry));
 ProcEntry.dwSize = sizeof(ProcEntry);
 ProcEntry.cntUsage = 1;

 if(Process32First(hproc, &ProcEntry))
 {
  int i = 0;
  for(;;)  
  {
   if(!Process32Next(hproc, &ProcEntry))
    break;  
   char lpFileName[256] = {0};
   HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
           FALSE,
           ProcEntry.th32ProcessID
           );
   if(NULL != hProcess)  
   {  
    HMODULE hMod;
    DWORD cbNeeded;

    if( EnumProcessModules(hProcess, &hMod, sizeof( hMod ), &cbNeeded))
    {  
     DWORD dw = GetModuleFileNameEx(hProcess, hMod, lpFileName, 256);
    }  
    CloseHandle(hProcess);
    m_list.InsertItem(i,ProcEntry.szExeFile);
    m_list.SetItemText(i,1,lpFileName );
   
    //printf("%s/n",lpFileName);
   }  
  }//endfor
 }
 CloseHandle(hproc);  
 return   isExist;  
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值