HANDLE hSnapProcess=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//創(chuàng)建進(jìn)程快照
HANDLE hSnapModule;
PROCESSENTRY32 pe;
MODULEENTRY32 me;
ZeroMemory(&me,sizeof(MODULEENTRY32));
ZeroMemory(&pe,sizeof(PROCESSENTRY32));
me.dwSize=sizeof(MODULEENTRY32);
pe.dwSize=sizeof(PROCESSENTRY32);
int pos=0;
Process32First(hSnapProcess,&pe);//從線程快照中讀取第一個(gè)進(jìn)程信息
CString strTemp;
do
{
hSnapModule=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,pe.th32ProcessID); //根據(jù)進(jìn)程id創(chuàng)建模塊快照
m_pListCtrl->InsertItem(pos,_T("")); //插入一個(gè)item
Module32First(hSnapModule,&me); //讀取模塊中的信息 只有一個(gè)模塊。因?yàn)槭歉鶕?jù)具體進(jìn)程創(chuàng)建的模塊快照
m_pListCtrl->SetItemText(pos,0,pe.szExeFile); //設(shè)置的進(jìn)程名
strTemp.Format(_T("%d"),pe.th32ProcessID);
m_pListCtrl->SetItemText(pos,1,strTemp); //進(jìn)程id
strTemp.Format(_T("%d"),pe.cntThreads);
m_pListCtrl->SetItemText(pos,2,strTemp); //線程數(shù)
m_pListCtrl->SetItemText(pos,3,me.szExePath); //進(jìn)程exe路徑
} while (Process32Next(hSnapProcess,&pe));//讀下一個(gè)進(jìn)程
在寫(xiě)個(gè)關(guān)閉進(jìn)程 的按鈕
void CProcessManagerDlg::OnBnClickedButtonClose()
{
int iMark=m_pListCtrl->GetSelectionMark();
if(-1!=iMark)
{
CString str=m_pListCtrl->GetItemText(iMark,1);
HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,_wtoi(str));
DWORD dExitCode;
GetExitCodeProcess(hProcess,&dExitCode);
TerminateProcess(hProcess,dExitCode);
m_pListCtrl->DeleteItem(iMark);
str.Format(_T("%d"),--count);
GetDlgItem(IDC_STATIC_COUNT)->SetWindowText(str);
}
else
{
MessageBox(_T("沒(méi)有選中進(jìn)程"));
}
}
嘿嘿,看看這個(gè)圖 還是挺好的。