txm888 发表于 2011-10-28 17:21:57

回复 15# user3000


    嗯,,,,呵呵,刚刚又试了下拦截关机程序,发现在真正关机前,系统进程一个也不退,这下没捞毛了,可能无法从进程上判断了,

txm888 发表于 2011-10-28 17:36:31

服务程序检测是否关机?可以不可以检测某服务被停止,而判断为关机呢?

netegg 发表于 2011-10-28 18:02:15

楼主如果有耐心,先看看p侠那个关于进程的操作,某种意义上说就是你这个问题的通用解释,那个是挂到系统核心的,关机比那个相对简单些

my788522 发表于 2011-10-28 21:11:57

http://www.autoitx.com/forum.php?mod=viewthread&tid=18188
看此贴

其中这一句 换为
$pCopyFileExW = _RTGetProcAddress("user32.dll", "ExitWindowsEx")
即可阻止关机

hook ExitWindowsEx

my788522 发表于 2011-10-28 21:13:35

当然其他的得你自己改改才适用 可以截获关机/重启等命令

xms77 发表于 2011-10-28 22:00:02

我曾经也想截获windows的shutdown命令,但一直未果,hook真的不懂,研究感觉很吃力,同志还需努力啊!

pusofalse 发表于 2011-10-29 09:36:05

服务程序的回调控制函数 可以接收关机、预关机的通知,调用SetServiceStatus函数向SCM报告服务状态时,把表示关机的数据位包含进 可控制的服务请求中就可以了(用BitOR函数)。当准备关机时,系统将自动调用服务程序的控制函数,并将控制代码设为SERVICE_CONTROL_PRESHUTDOWN(将要关机),或SERVICE_CONTROL_SHUTDOWN(正在关机)。
具体请参考:http://msdn.microsoft.com/en-us/library/ms683241(v=VS.85).aspx

水木子 发表于 2011-10-29 12:43:44

回复 22# pusofalse
非常深奥且专业的讲解,学习ing...

txm888 发表于 2011-11-17 16:19:58

回复 22# pusofalse


    太感谢P版了,,我再测试测试,在此也谢谢各位的参与,
页: 1 [2]
查看完整版本: 请教如何让服务程序检测到关机指令?论坛的捕获关机指令示例都是针对有窗口的