黑菜 发表于 2011-1-4 11:41:10

如何拦截关机信息?

下面列出一种方法,来自论坛搜索。但这种方法其实没太大用处,因为这个只是系统关机前对有窗口的应用程序的一个通知,等待应用程序返回未就绪的标志,然后不关机。以防止如word未保存文件强制关机引起的内容丢失。

并且当AU3收到这个消息时,绝大多数其它程序已经被结束了。所以,有没有更好的办法来在第一时间拦截关机呢(其它程序也不会被结束)?$WM_QUERYENDSESSION = 0x0011
GUIRegisterMsg($WM_QUERYENDSESSION, "Cancel")
GUICreate("")
GUISetSTate(@SW_HIDE)
Global $Esc = 0
While 1
If $Esc = 1 then
MsgBox (0, "", "想干什么!按确定后继续截获")
$Esc = 0
EndIf
sleep(10)
WEnd

Func Cancel($hWndGUI, $MsgID, $WParam, $LParam)
$Esc = 1
Return False
EndFunc复制代码

tryhi 发表于 2011-1-4 13:15:44

据说用HOOK可以,但从未见过

republican 发表于 2011-1-4 19:18:49

回复 1# 黑菜

提高程序关机的优先级试试~

pusofalse 发表于 2011-1-4 19:56:14

挂钩User32.ExitWindowsEx函数。
参考:跨进程API Hook UDF - RTApiHook32.au3

5i5wei 发表于 2011-1-4 22:05:41

...............................

黑菜 发表于 2011-1-5 09:49:57

本帖最后由 黑菜 于 2011-1-5 09:57 编辑

挂钩User32.ExitWindowsEx函数。
参考:
pusofalse 发表于 2011-1-4 19:56 http://www.autoitx.com/images/common/back.gif


    好牛叉的代码,看得我晕乎乎的。
P版很强大,有没有简单点的代码啊。

lin0308 发表于 2011-1-5 16:43:22

又见P版来,注释很详细
页: [1]
查看完整版本: 如何拦截关机信息?