1、创建对话框
2、添加CListCtrl对话框,将属性改为Style ->View->Report
设置变量m_list
m_list.DeleteAllItems();
m_list.ModifyStyle(LVS_TYPEMASK, LVS_REPORT);
ListView_SetExtendedListViewStyle(m_list.m_hWnd,
LVS_EX_GRIDLINES |LVS_EX_FULLROWSELECT );
//在列表控件中添加图标
//m_imageList.Create(IDB_BITMAP1,16,1,RGB(255,0,255));
//m_ListCtrl.SetImageList(&m_imageList,LVSIL_SMALL);
//初始化列表控件
m_list.InsertColumn(0,"进程ID",LVCFMT_LEFT,120,0);
m_list.InsertColumn(1,"进程名",LVCFMT_LEFT,120,1);
m_list.InsertColumn(2,"父进程ID",LVCFMT_LEFT,120,2);
m_list.InsertColumn(3,"父进程名",LVCFMT_LEFT,120,3);
SetTimer(20110902,1000,0);
3、为窗体添加WM_Timer事件
添加进程获取代码如下,如果要获取父进程使用MAP查询即可
if(nIDEvent == 20110902)
{
//MessageBox("Timeok");
KillTimer(20110902);
m_list.DeleteAllItems();
CString str;
HANDLE SnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
PROCESSENTRY32 ProcessInfo;//声明进程信息变量
ProcessInfo.dwSize=sizeof(ProcessInfo);//设置ProcessInfo的大小
//返回系统中第一个进程的信息
BOOL Status=Process32First(SnapShot,&ProcessInfo);
int m_nProcess=0;
while(Status)
{
m_nProcess++;
str.Format("%d",ProcessInfo.th32ProcessID);
int irow = m_list.InsertItem(0,0);
m_list.SetItemText(irow,0,str);
m_list.SetItemText(irow,1,ProcessInfo.szExeFile);
str.Format("%d",ProcessInfo.th32ParentProcessID);
m_list.SetItemText(irow,2,str);
/*
dlg.dwSize=ProcessInfo.dwSize;
dlg.cntUsage=ProcessInfo.cntUsage;
dlg.processID=ProcessInfo.th32ProcessID;
dlg.defaultHeapID=ProcessInfo.th32DefaultHeapID;
dlg.moduleID=ProcessInfo.th32ModuleID;
dlg.cntThreads=ProcessInfo.cntThreads;
dlg.parentProcessID=ProcessInfo.th32ParentProcessID;
dlg.classBase=ProcessInfo.pcPriClassBase;
dlg.dwFlags=ProcessInfo.dwFlags;
dlg.m_strExeFile=ProcessInfo.szExeFile;
TRACE("--------------%s/n",dlg.m_strExeFile);
break;
}
*/
//获取下一个进程的信息
Status=Process32Next(SnapShot,&ProcessInfo);
}
CloseHandle(SnapShot);
4、为CListCtrl添加右键事件增加弹出菜单
CMenu menu ,* pSubMenu; //定义下面要用到的cmenu对象
menu.LoadMenu(IDR_POPMENU); //装载自定义的右键菜单
//获取第一个弹出菜单,所以第一个菜单必须有子菜单
pSubMenu = menu.GetSubMenu(0);
CPoint oPoint; //定义一个用于确定光标位置的位置
GetCursorPos( &oPoint); //获取当前光标的位置,以便使得菜单可以跟随光标
//在指定位置显示弹出菜单
pSubMenu->TrackPopupMenu (TPM_LEFTALIGN, oPoint.x, oPoint.y, this);
5、为菜单添加菜单Command事件代码如下
CListCtrl *CList =(CListCtrl *) GetDlgItem(IDC_LIST1);
int istat=CList->GetSelectionMark();//用istat存放当前选定的是第几项
//获取当前项中的数据,0代表是第0列
CString pString =CList->GetItemText(istat,0);
//pString.Format(_T("%d"),processindex);
// TerminateThread(
HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE,atoi(pString) );
if( hProcess != NULL )
{
TerminateThread(hProcess,0);
CloseHandle(hProcess);
m_list.DeleteItem(istat);
}