怎样监控记事本的关闭事件,加个关闭的提示。
本帖最后由 m765555 于 2015-3-13 21:48 编辑本人是想打开记事本后,点击关闭按钮时,想手动加个关闭的提示,提示确定和取消两个选择。当鼠标点击关闭时,记事本窗口隐藏,如果选确定则直接关闭记事本,如果选取消则重新显示记事本。此功能成功后想用于其它软件中,代码一直未能成功,请各位高手,大大们,帮忙瞧一瞧,研究一下,感谢。代码如下:Opt("GUIOnEventMode", 1)
#include <GUIConstantsEx.au3>
Global $soft_pid=Run("notepad.exe")
Global $soft_hand=_pid_jb($soft_pid)
;MsgBox(1+64+262144,"提示",$soft_hand) ;显示一下句柄看看是否正确。
GUISetOnEvent(-3,'close_soft',$soft_hand)
While 1
Sleep(100)
WEnd
Func close_soft()
$xx=MsgBox(1+64+262144,"提示","确定关闭记事本吗?")
If $xx=1 Then
Exit ;如果点击确定则把窗口关闭。
ElseIf $xx=2 Then
GUISetState (@SW_SHOW ,$soft_hand) ;如果点击取消则把窗口再显示出来。
EndIf
EndFunc
Func _pid_jb($pid) ;此函数是通过pid获取句柄。
Dim $jb = ""
While $jb = ""
$win_list = WinList("")
For $i = 1 To $win_list
If BitAND(WinGetState($win_list[$i]), 2) And WinGetProcess($win_list[$i], "") = $pid Then $jb = $win_list[$i]
Next
WEnd
Return $jb
EndFunc ;==>pid_jb
无人问津,冷清呀,哎 回复 2# m765555
GUISetOnEvent() 有 3 个参数, 第 3 参数为 "由 GUICreate() 函数返回的窗口句柄 (默认为先前使用的窗口)".
说明此函数只能作用于脚本创建的窗口, 记事本不是脚本创建的, 因此此函数没有作用! 131738 大
哪有其它的办法解决吗? 办法是有的,例子子类化,拦截WM_CLOSE;还有SetWindowsHookEx.但跨进程都要注入 慢慢研究一下,谢谢提示.
页:
[1]