MFC 任务管理器设计
在学习界面设计,因为对一些控件不熟悉,所以也参考了别人的。核心代码如下。



void CTasklistDlg::Expand()
{
m_list.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
m_list.InsertColumn(,L"Process Name",,);
m_list.InsertColumn(,L"Pid",,);
m_list.InsertColumn(,L"Path",,);
} void CTasklistDlg::OnNMRClickList(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
// TODO: Add your control notification handler code here
CMenu popup;
popup.LoadMenu(IDR_MENU1);
CMenu* pM = popup.GetSubMenu();
CPoint p;
GetCursorPos(&p);
int count = pM->GetMenuItemCount();
if (m_list.GetSelectedCount() == ) //如果没有选中
{
for (int i = ; i < count; i++)
{
pM->EnableMenuItem(i, MF_BYPOSITION | MF_DISABLED | MF_GRAYED); //菜单全部变灰
} }
pM->TrackPopupMenu(TPM_LEFTALIGN, p.x, p.y, this); *pResult = ;
} #include<Tlhelp32.h>
#include<Psapi.h>
#pragma comment(lib,"Psapi.lib") BOOL CTasklistDlg::GetProcessList()
{
BOOL result = FALSE;
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, );
if (hSnap == INVALID_HANDLE_VALUE)
return FALSE; int idx = ;
CString strID;
HANDLE hProcess = NULL;
CString strPath, strSys(_T("SystemRoot")); PROCESSENTRY32 info = { };
info.dwSize = sizeof(PROCESSENTRY32); BOOL bRet = Process32First(hSnap,&info); while (bRet)
{
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, info.th32ProcessID);
if (hProcess)
{
strPath.Empty();
DWORD dwRet = GetModuleFileNameEx(hProcess, NULL, strPath.GetBufferSetLength(MAX_PATH), MAX_PATH);
strPath.ReleaseBuffer();
strPath.TrimLeft(_T("\\?"));
if (strPath.Left(strSys.GetLength()).CompareNoCase(strSys) == )
{
TCHAR szWin[MAX_PATH] = { };
GetWindowsDirectory(szWin,MAX_PATH);
strPath.Replace(strSys,szWin); }
SHFILEINFO shInfo = { };
SHGetFileInfo(strPath, , &shInfo, sizeof(SHFILEINFO), SHGFI_SMALLICON | SHGFI_ICON);
} idx = m_list.InsertItem(m_list.GetItemCount(), info.szExeFile);
strID.Empty();
strID.Format(_T("%d"), info.th32ProcessID);
m_list.SetItemText(idx, , strID);
m_list.SetItemText(idx, , strPath); bRet = Process32Next(hSnap, &info);
} return TRUE;
} BOOL CTasklistDlg::AdjustPrivileges()
{
HANDLE hToken = NULL;
TOKEN_PRIVILEGES tp = { };
TOKEN_PRIVILEGES oldtp = { };
DWORD dwSize = sizeof(TOKEN_PRIVILEGES);
LUID luid = { }; if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) {
if (GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
return TRUE;
else
return FALSE;
}
if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luid)) {
CloseHandle(hToken);
return FALSE;
} tp.PrivilegeCount = ;
tp.Privileges[].Luid = luid;
tp.Privileges[].Attributes = SE_PRIVILEGE_ENABLED; /* Adjust Token Privileges */
if (!AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), &oldtp, &dwSize)) {
CloseHandle(hToken);
return FALSE;
} // close handles
CloseHandle(hToken);
return TRUE;
}
void CTasklistDlg::OnKillprocess()
{
// TODO: Add your command handler code here
//DWORD ProcessID = 0;
DWORD dwProcess;
wchar_t szBuf[MAX_PATH] = {};
int index = m_list.GetSelectionMark(); //获取光标所在的位置
m_list.GetItemText(index, , szBuf, MAX_PATH); //获取多少行光标,然后取得数据
dwProcess = _wtol(szBuf);
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcess);
if (NULL == hProcess)
{
MessageBox(L"打开那进程句柄失败!");
} if (TerminateProcess(hProcess, ))
{
PROCESSITEM* pProcItem;
pProcItem = (PROCESSITEM*)m_list.GetItemData(index);
delete pProcItem;
m_list.DeleteItem(index);
MessageBox(L"进程结束成功");
}
else
{
MessageBox(L"结束进程失败!");
}
} void CTasklistDlg::OnInfoExit()
{
exit();
// TODO: Add your command handler code here
} void CTasklistDlg::OnInfoRefresh()
{
// TODO: Add your command handler code here
m_list.SetRedraw(FALSE);
m_list.DeleteAllItems();
GetProcessList();
m_list.SetRedraw(TRUE);
m_list.Invalidate();
m_list.UpdateWindow();
}
MFC 任务管理器设计的更多相关文章
- MFC任务管理器task manager----进程的挂起与恢复--NtSuspendProcess&&NtResumeProcess
http://hi.baidu.com/xbbsh/blog/item/b73d3125462201084c088db1.html ---------------------------------- ...
- 【MFC】MFC DLEdit 设计属于自己的编辑框_鼠标悬停
MFC DLEdit 设计属于自己的编辑框 2012-02-04 13:00 by 捣乱小子, 3543 阅读, 5 评论, 收藏, 编辑 起因 无意间看到了大牛们写的自定义编辑框控件,于是找了个时间 ...
- MFC工具栏设计
工具栏中包含了一组用于执行命令的按钮,每个按钮都用一个图标来表示.当单击某个按钮时,会产生一个相应的消息,对这个消息的处理就是按钮的功能实现.将菜单中常用的功能放置在工具栏中,这样可以方便用户操作,省 ...
- OpenCV与MFC实战之图像处理 样本采集小工具制作 c++MFC课程设计
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/12111102.html 入门不久的人可以通过opencv实战来锻炼一下学习opencv的成果, ...
- MFC-01-Chapter01:Hello,MFC---1.2 MFC简介
1.2 MFC简介 MFC是Microsoft提供的放置Windows API的面向对象的包装的C++类库.MFC大约封装了好几百个类,其中有一些可以直接调用,有些类可以作为用户自己的类的基类.一些M ...
- C++新手之详细介绍MFC
MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对 ...
- C++的MFC,与C#的.NET
转载:http://blog.sina.com.cn/s/blog_7f5bde5c0101hk5n.html 以下摘自各问答网站.博客论坛: [1]MFC早已过时,现在C++多数是用来编写底层方法而 ...
- 评侯捷的<深入浅出MFC>和李久进的<MFC深入浅出>
侯捷的<深入浅出mfc>相信大家都已经很熟悉了,论坛上也有很多介绍,这里我就不多说了. 而李久进的<mfc深入浅出>,听说的人可能就少得多.原因听说是这本书当时没有怎么宣传,而 ...
- 基于VC++的网络扫描器设计与实现
本文正文其实是自己的毕业论文,现在搬上来有两个原因. 一是之前大学的文档都放在百度网盘上,大概去年的时候百度网盘改版搞得不太稳定,文件夹移动次数一多里边就会有一些文件丢失了,也没有很在意.但前几天看申 ...
随机推荐
- Oracle Schema Objects——Tables——Table Compression
Oracle Schema Objects Table Compression 表压缩 The database can use table compression to reduce the amo ...
- kafka_2.11-0.10.1.1集群搭建安装配置
在搭建kafka集群之前,请保证zookeeper已安装. 1.下载 官网下载链接:http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/0.10.1.1/ ...
- T-SQL with关键字 with as 递归循环表
)SET @OrgId = N'901205CA-6C22-4EE7-AE4B-96CC7165D07F'; WITH Childs AS ( SELECT * FROM HROrgRelation ...
- caffe自定义layer
caffe自带layers: http://caffe.berkeleyvision.org/tutorial/layers.html Layers: Image Data - read raw im ...
- Python列表切片详解([][:][::])
Python切片是list的一项基本的功能,最近看到了一个程序,里面有这样一句类似的代码: a = list[::10] 1 不太明白两个冒号的意思就上网百度,发现大多数人写的博客中都没有提到这一个用 ...
- 阿里巴巴 JAVA 开发手册
阿里巴巴 JAVA 开发手册 1.0.0 阿里巴巴集团技术部 2016.12.7 首次向 Java 业界公开 一. 编程规约(一) 命名规约1. [强制]所有编程相关命名均不能以下划线或美元符号开始, ...
- [Mysql ]TIME ZONE
mysql的时间相关的类型如下: 1. timestamp 时区敏感的 2. date 非时区敏感 3. datetime 非时区敏感 4. time 非时区敏感
- PHP连接局域网MYSQL数据库的实例
PHP连接局域网MYSQL数据库的例子. 代码: ?> 第一行ip对应局域网某台主机,关于局域网内mysql连接可参考我的摘抄 ...
- beego——过滤器
beego支持自定义过滤中间件,例如安全验证.强制跳转等. 过滤器函数如下所示: beego.InsertFilter(pattern string, position int, filter Fil ...
- Matplot相关(二)——统计图
Matplotlib:其能够支持所有的2D作图和部分3D作图.能通过交互环境做出印刷质量的图像. ————————缩写定义———————— import matplot.pyplot as plt — ...