关闭的,你要防止关机,就要将ExitWindowsEx挂钩,
也就是HOOK。系统关机是这样的:
系统收到关机按钮的消息 ->调用ExitWindowsEx。
HOOK,将ExitWindowsEx的地址替换成你的。
关机消息 ->你的关机函数 ->调用真正的ExitWindowsEx。
这样你就可以选择是否去调用真正的ExitWindowsEx
来实现拦截系统关机。
HOOK API 函数一般用VC++来写,用VB实现有点难,
还涉及到了汇编,而且HOOK代码要求稳定性高,
一点点错误就可能造成不可预料的后果,我用过
SetWindowsHookEx写过低级键盘HOOK,槐丛死机了
好几次才调试好扰明圆。
有一个思路,如果你真要用VB来写,
可以把VC++调试好的代码,按F10调试运行,
查看内存,将机器码拷贝出来,用VB调用,
也就是VB内嵌汇编,VB的内嵌汇编调用思缓塌路
为CallWindowProc函数,在汇编码的前面将
参数用popd出栈,最后加ret实现返回。
小弟技术浅,目前还不会HOOK API
具体代码你可以上网找找。
比如 防杀的 HOOK OpenProcess 等。
能帮的我只有这么多了,还请楼主好好学习,
天天向上。
您好这位朋友,可能有病毒,建议应用卡巴斯基或者瑞星杀毒.一,正确设置BIOSBIOS的设置不对很可能会导致不能正常关机.一般而言,老主板容易出现这种故障,在BIOS里面禁掉网络唤醒和USB唤醒选项即可.现在是USB设备大行其道之时,什么U盘,鼠标,键盘,Modem等等,应有尽有.殊不知这些USB设备往往是造成关机故障的罪魁祸首.当出现关机变成重启故障时,如果你的电脑上接有USB设备,请先将其拔掉,再试试,如果确信是USB设备的故障,那么最好是换掉该设备,或者是连接一个外置USBHub,将USB设备接到USBHub上,而不要直接连到主板的USB接口上.二,电源管理有时候电源管理选项设置得不正确也会造成关机故障.点击“开始→控制面板→电源选项”,在d出的窗口中,根据需要启用或取消“高级电源支持”(如果你在故障发生时使用的是启用“高级电源支持”,就试着取消它,反之就启用它),Windows98中这种方法往往能解决大部分电源管理导致的关机故障.如果没有选中“高级”菜单里族扰唯的“在按下计算机电源按钮时(E):关机”,把它选中即可.三,设置系统出错功能在Windows2000XP的默认设置中,当系统出现错误时会自动重启.将该功能关闭就可以解决自动重启的故障.解决过程如下:右击“我的电脑”,选择“属性”,在d出“系统属性”窗口中点选“高级”选项卡,点击“启动和故障恢复”栏目下的设置,去掉系统失败中“自动重新启动”前的勾,然后确定.(你可以将你看到的所有的勾都取消了,这样可以加快XP的启动速度)四,进安全模式,如果关机后一样重启,就该考虑考虑硬件问题了,电源或者主板.对了,突然想起还有一种类似的情况,就是关机却不能自动切断电源,在关机过程中,一切正常,但是却停止在“您可以安全地关闭计算机了”却无法自动切断电源,需要手动按主机箱面板上的“Power”键来关机.造成出现该故障的原因一般有以下几个方面:一,没有开启电源李脊支持依次点击“开始→设置→控制面板→电源选项→高能电源管理”,勾选“启用高级电源管理支持”即可.二,BIOS设置有误可能是误修改了BIOS中有关电源管理的选项,如果你对BIOS设置比较熟悉,请进入BIOS,试着修改BIOS中有关电源管理的选项.如果你对BIOS不熟悉,那么干脆选择“Loaddefaultsetup”选项,恢复BIOS到出厂时默认的设置即可.三,OfficeXP也惹祸OfficeXP当中Ctfmon.exe一直是一个颇有争议的问题.Ctfmon.exe是微软的文本服务文件,只要用户安装了OfficeXP并且安装了“可选用户输入方法组件,这个文件就会自动调用它,为语音识别,手写识别,键盘以及其它用户输入技术提供文字输入支持.即使我们没有启动OfficeXP,Ctfmon.exe照样在后台运行.就是它,往往造成了关机故障,你不妨将其卸载试试.依次点击“开始→兆培设置→控制面板→添加/删除程序”,在目前已安装的程序中选中“MicrosoftOfficeXPProfessionainWithFrontPage”,点击“更改”按钮,在“维护模式选项”对话框中选择“添加或删除功能”选项,点下一步,d出“为所有Office应用程序和工具选择安装选项”对话框,展开“Office共享功能”选项,选中“中文可选用户输入方法”选项,在d出菜单中选择“不安装”点“更新”按钮即可.四,APM/NTLegacyNode没有开启一般情况下APM/NTLegacyNode没有开启可能造成关机却不能自动切断电源.进入设备管理器,点菜单栏中的“查看→显示隐藏的设备”,显示出系统中所有的隐藏设备.在设备列表框中查看有无APM/NTLegacyNode选项.如果你的电脑支持此功能,就会有该选项,双击,在d出的属性对话框中,点击“启用设备”按钮即可.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)