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;
}