展开全部
正如楼上所说,Windows是调用ExitWindowsEx来
关闭的,你要防止关机,就要将ExitWindowsEx挂钩,
也就是HOOK。系统关机是这样的:
系统收到关机按钮的消息 -> 调用ExitWindowsEx。
HOOK,将ExitWindowsEx的地址替换成你的。
关机消息 -> 你的关机函数 ->调用真正的ExitWindowsEx。
这样你就可以选择是否去调用真正的ExitWindowsEx
来实现拦截系统关机。
HOOK API 函数一般用VC++来写,用VB实现有点难,
还涉及到了汇编,而且HOOK代码要求稳定性高,
一点点错误就可能造成不可预料的后果,我用过
SetWindowsHookEx写过低级键盘HOOK,死机了
好几次才调试好。
有一个思路,如果你真要用VB来写,
可以把VC++调试好的代码,按F10调试运行,
查看内存,将机器码拷贝出来,用VB调用,
也就是VB内嵌汇编,VB的内嵌汇编调用思路
为CallWindowProc函数,在汇编码的前面将
参数用pop弹出栈,最后加ret实现返回。
小弟技术浅,目前还不会HOOK API
具体代码你可以上网找找。
比如 防杀的 HOOK OpenProcess 等。
能帮的我只有这么多了,还请楼主好好学习,
天天向上。
关闭的,你要防止关机,就要将ExitWindowsEx挂钩,
也就是HOOK。系统关机是这样的:
系统收到关机按钮的消息 -> 调用ExitWindowsEx。
HOOK,将ExitWindowsEx的地址替换成你的。
关机消息 -> 你的关机函数 ->调用真正的ExitWindowsEx。
这样你就可以选择是否去调用真正的ExitWindowsEx
来实现拦截系统关机。
HOOK API 函数一般用VC++来写,用VB实现有点难,
还涉及到了汇编,而且HOOK代码要求稳定性高,
一点点错误就可能造成不可预料的后果,我用过
SetWindowsHookEx写过低级键盘HOOK,死机了
好几次才调试好。
有一个思路,如果你真要用VB来写,
可以把VC++调试好的代码,按F10调试运行,
查看内存,将机器码拷贝出来,用VB调用,
也就是VB内嵌汇编,VB的内嵌汇编调用思路
为CallWindowProc函数,在汇编码的前面将
参数用pop弹出栈,最后加ret实现返回。
小弟技术浅,目前还不会HOOK API
具体代码你可以上网找找。
比如 防杀的 HOOK OpenProcess 等。
能帮的我只有这么多了,还请楼主好好学习,
天天向上。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询