找回密码  加入

AUTOIT CN

搜索
查看: 3560|回复: 5

[GUI管理] 怎样监控记事本的关闭事件,加个关闭的提示。

[复制链接]
发表于 2015-3-13 21:34:24 | 显示全部楼层 |阅读模式
本帖最后由 m765555 于 2015-3-13 21:48 编辑

本人是想打开记事本后,点击关闭按钮时,想手动加个关闭的提示,提示确定和取消两个选择。当鼠标点击关闭时,记事本窗口隐藏,如果选确定则直接关闭记事本,如果选取消则重新显示记事本。此功能成功后想用于其它软件中,代码一直未能成功,请各位高手,大大们,帮忙瞧一瞧,研究一下,感谢。代码如下:
  1. Opt("GUIOnEventMode", 1)
  2. #include <GUIConstantsEx.au3>
  3. Global $soft_pid=Run("notepad.exe")
  4. Global $soft_hand=_pid_jb($soft_pid)
  5. ;MsgBox(1+64+262144,"提示",$soft_hand) ;显示一下句柄看看是否正确。
  6. GUISetOnEvent(-3,'close_soft',$soft_hand)

  7. While 1
  8.         Sleep(100)
  9. WEnd

  10. Func close_soft()
  11.         $xx=MsgBox(1+64+262144,"提示","确定关闭记事本吗?")
  12.                  If $xx=1 Then
  13.                          Exit                                       ;如果点击确定则把窗口关闭。
  14.                  ElseIf $xx=2 Then
  15.                          GUISetState (@SW_SHOW ,$soft_hand)   ;如果点击取消则把窗口再显示出来。
  16.          EndIf
  17. EndFunc



  18. Func _pid_jb($pid)    ;此函数是通过pid获取句柄。
  19.         Dim $jb = ""
  20.         While $jb = ""
  21.                 $win_list = WinList("[REGEXPTITLE:.+]")
  22.                 For $i = 1 To $win_list[0][0]
  23.                         If BitAND(WinGetState($win_list[$i][0]), 2) And WinGetProcess($win_list[$i][1], "") = $pid Then $jb = $win_list[$i][1]
  24.                 Next
  25.         WEnd
  26.         Return $jb
  27. EndFunc   ;==>pid_jb



复制代码
 楼主| 发表于 2015-3-14 19:48:09 | 显示全部楼层
无人问津,冷清呀,哎
发表于 2015-3-16 01:24:42 | 显示全部楼层
回复 2# m765555

GUISetOnEvent() 有 3 个参数, 第 3 参数为 "由 GUICreate() 函数返回的窗口句柄 (默认为先前使用的窗口)".

说明此函数只能作用于脚本创建的窗口, 记事本不是脚本创建的, 因此此函数没有作用!
 楼主| 发表于 2015-3-17 09:10:07 | 显示全部楼层
131738 大
哪有其它的办法解决吗?
发表于 2015-3-17 13:56:48 | 显示全部楼层
办法是有的,例子子类化,拦截WM_CLOSE;还有SetWindowsHookEx.但跨进程都要注入
 楼主| 发表于 2015-3-18 19:46:29 | 显示全部楼层
慢慢研究一下,谢谢提示.
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2021-9-23 10:45 , Processed in 0.241220 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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