找回密码
 加入
搜索
查看: 3258|回复: 6

[系统综合] 如何拦截关机信息?

  [复制链接]
发表于 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
复制代码
发表于 2011-1-4 13:15:44 | 显示全部楼层
据说用HOOK可以,但从未见过
发表于 2011-1-4 19:18:49 | 显示全部楼层
回复 1# 黑菜

提高程序关机的优先级试试~
发表于 2011-1-4 19:56:14 | 显示全部楼层
挂钩User32.ExitWindowsEx函数。
参考:跨进程API Hook UDF - RTApiHook32.au3

评分

参与人数 2金钱 +20 收起 理由
republican + 10 学习了~
tryhi + 10

查看全部评分

发表于 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



    好牛叉的代码,看得我晕乎乎的。
P版很强大,有没有简单点的代码啊。
发表于 2011-1-5 16:43:22 | 显示全部楼层
又见P版来,注释很详细
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-21 14:37 , Processed in 0.081822 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表