VC对话框禁止关闭按钮和禁止任务管理中关闭进程
1.BOOL C***Dlg::OnInitDialog()
{
//禁止关闭对话框
CMenu* pMenu = this->GetSystemMenu(FALSE);
pMenu->ModifyMenu(SC_CLOSE,MF_BYCOMMAND | MF_GRAYED );
//禁止在任务管理器中关闭进程
SetTimer(1,m_nTimer,NULL);//设置1号定时器,循环调用stopKillProcess()函数,禁止任务管理器中关闭进程
}
2.void CClientTracerDlg::stopKillProcess()//禁止任务管理器中关闭进程
{
HWND hwnd;
int iItem=0;
LVITEM lvitem, *plvitem;
char ItemBuf[512],*pItem;
DWORD PID;
HANDLE hProcess;
// 查找任务管理器ListView窗口句柄
hwnd=::FindWindow("#32770",_T("Windows 任务管理器"));
hwnd=::FindWindowEx(hwnd,0,"#32770",0);
hwnd=::FindWindowEx(hwnd,0,"SysListView32",0);
// Windows任务管理器尚未启动则返回
if (!hwnd)
return;
else
{
// 没有指定目标进程则返回
iItem=::SendMessage(hwnd,LVM_GETNEXTITEM,-1,LVNI_SELECTED);
if (iItem==-1)
return;
else
{
// 获取进程句柄操作失败则返回
GetWindowThreadProcessId(hwnd, &PID);
hProcess=OpenProcess(PROCESS_ALL_ACCESS,false,PID);
if (!hProcess)
return;
else
{
plvitem=(LVITEM*)VirtualAllocEx(hProcess, NULL, sizeof(LVITEM), MEM_COMMIT, PAGE_READWRITE);
pItem=(char*)VirtualAllocEx(hProcess, NULL, 512, MEM_COMMIT, PAGE_READWRITE);
// 无法分配内存则返回
if ((!plvitem)||(!pItem))
return;
else
{
lvitem.cchTextMax=512;
lvitem.iSubItem=0; //ProcessName
lvitem.pszText=pItem;
WriteProcessMemory(hProcess, plvitem, &lvitem, sizeof(LVITEM), NULL);
::SendMessage(hwnd, LVM_GETITEMTEXT, (WPARAM)iItem, (LPARAM)plvitem);
ReadProcessMemory(hProcess, pItem, ItemBuf, 512, NULL);
// 比较字符串,匹配进程映像名
CString str = (CString)ItemBuf;
if(str.CompareNoCase(_T("ClientTracer.exe")) == 0)
{
HWND hWnd=::FindWindow(NULL,_T("Windows 任务管理器"));
::SendMessage(hWnd,WM_DESTROY,0,0);
Sleep(100);
::MessageBox(NULL,_T("禁止关闭系统关键进程!"),_T("提示"),MB_ICONERROR | MB_OK);
}
}
}
}
}
//释放内存
CloseHandle(hwnd);
CloseHandle(hProcess);
VirtualFreeEx(hProcess, plvitem, 0, MEM_RELEASE);
VirtualFreeEx(hProcess, pItem, 0, MEM_RELEASE);
}
3.定时器设置调用stopKillProcess(),也可以多线程调用stopKillProcess()
void C***Dlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(nIDEvent == 1)
{
stopKillProcess();
}
CDialog::OnTimer(nIDEvent);
}
VC对话框禁止关闭按钮和禁止任务管理中关闭进程相关推荐
- Linux中关闭进程
使用ps aux或者top查看进程,找到对应进程的进程号PID后使用kill -9 PID即可关闭进程. ps是静态查看进程 top是动态持续监控进程 在没开大写键盘的情况下,使用shift + m可 ...
- Centos中关闭tty以及禁止ipv6
Centos中关闭tty以及禁止ipv6 1.Centos6.x关闭/sbin/mingetty方法 修改/etc/sysconfig/init,把23行的ACTIVE_CONSOLES=/dev/t ...
- Textbox控件禁止用户向文本框中输入文字
在Winform程序中,Textbox控件,如何禁止用户向文本框中输入文字,而只是可以通过程序来写入内容 选择这个控件的属性,在事件列中找到KeyPress,双击,生成相应的事件监听方法,加入代码e. ...
- html里如何禁止输入框自动提示,HTML中禁止自动完成和禁用输入法
原标题:HTML中禁止自动完成和禁用输入法 现在一般浏览器会提供了一个自动完成功能可以记忆我们的输入内容(如登录帐号等),方便下一次快速地录入类似资料.这确实是一个非常友好的功能, 在操作时只需用鼠标 ...
- VC++对话框学习总结
VC++中如何复制对话框资源 http://www.cnblogs.com/Yogurshine/p/3710566.html 法1: 在你的工程中添加另一个工程的rc文件,这时资源视图中就会出现两个 ...
- h5页面禁止复制_网页禁止鼠标右键禁止全选复制粘贴的方法
这篇文章主要为大家详细介绍了网页禁止鼠标右键禁止全选复制粘贴的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴. 网页禁止鼠标右键禁止全选复制粘贴有很多种JS方 ...
- 禁止word另存为,禁止图片另存为excel禁止另存为
在很多企事业单位,处于商业机密保护的需要,常常需要禁止一些文件格式的"另存为"功能,防止通过"另存为"将文件另行保存,据为己有的目的:尤其是在局域网中访问服务器 ...
- 解除禁tracet_FAQ-S6700如何禁止ping不禁止tracert
在ACL中可选择禁止对应的ping包ICMP类型即可,比如按照如下的ACL写: [S6700-acl-adv-3000]rule 10 deny icmp icmp-type INTEGER<0 ...
- IE浏览器PDF展示,禁止下载,禁止打印,禁止另存,禁止复制完美解决
1,IE浏览器下使用PDFObject,需求是只能预览不能下载不能另存及打印和复制, <template><div id="ensur"></div& ...
最新文章
- 这可能是史上最全的Python算法集!
- 夫妻北漂10年后返乡,程序员丈夫花8万元将土屋改成别墅:边学边做
- SAP MM 初阶之Movement Reason
- 基于centos6的mysql5.7.13主从部署(一)
- 容斥原理学习(Hdu 4135,Hdu 1796)
- 014PHP基础知识——流程控制(二)
- 以太坊solidity编程常见错误(不定期更新)
- 一维数组名与二维数组名的关联
- IO(File 递归)
- Docker最全教程——从理论到实战(九)
- 如何用python 开发web_如何用python开发web
- 深入react技术栈(1):React简介
- 史玉柱吃透了中国人的人性,也引发了争议
- linux下的打包和解压缩命令,浅析Linux打包压缩解压缩命令大全(收藏)
- 【渝粤教育】国家开放大学2018年春季 8665-21T护理伦理学 参考试题
- 计算机组成原理收获与心得,学习计算机组成原理心得体会
- SQL SERVER 不允许保存更改
- HTML静态网页设计
- Jetson tx2记录422测试笔记和wifi信号测试笔记
- html 中图片显示不了,css中不显示图片怎么办
热门文章
- mysql isolation level_MySQL数据库事务隔离级别(Transaction Isolation Level)
- Apache开启GZIP压缩功能方法
- 在Apache上隐藏服务器签名的方法
- 304 Not Modified
- 【机器学习】异常检测算法(I)
- 【MongoDB】MongoDb的“not master and slaveok=false”错误及解决方法
- 【转】Oracle Outline使用方法及注意事项
- Android开发过程中在sh,py,mk文件中添加log信息的方法
- MTK6589下传感器框架结构和代码分析以及传感器的参数指标
- Android+Eclipse修改包路径