鼠标热键设置....类似键盘的HOTKEY[已解决]
本帖最后由 wangwen916 于 2010-8-20 22:33 编辑要做到程序运行后,点鼠标右键,立马显示"hello,world!",1S后窗口消失,继续等待右键.
参考: WM_RBUTTONDBLCLK
我不会用他,请高手指点,谢谢! 用WM_RBUTTONDBLCLK的话代码太长,我偷偷懒送你个简单的吧#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("", 137, 84, 192, 124)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_SECONDARYDOWN
MsgBox(0,"","hello,world!",1)
EndSwitch
WEnd
回复 2# jhun
如果没有GUI的情况下呢? 谢谢楼上的,补充一句,要鼠标在任意位置点右键都可以,你的代码只有在控件上才有效果...再帮忙想想办法... _ispressed 这个函数可以。 回4楼#include <Misc.au3>
$dll = DllOpen("user32.dll")
While 1
Sleep ( 250 )
If _IsPressed("02", $dll) Then
MsgBox(0,"_IsPressed", "End Key Pressed",1)
;ExitLoop
EndIf
WEnd
DllClose($dll)这样的话,右键如果是点击,程序检测不到,按下右键的话,还是可以的...再想想办法,谢谢! 回复 3# 水木子
不好意思,理解错误LZ的意思,我以为是在GUI上面的右键
没GUI的话就只有拦截消息了 回复 6# wangwen916
sleep设小一点,比如10,5,点击照样能检测到 #include <Misc.au3>
$dll = DllOpen("user32.dll")
While 1
;Sleep ( 250 )
If _IsPressed("02", $dll) Then
MsgBox(0,"_IsPressed", "End Key Pressed",1)
;ExitLoop
EndIf
WEnd
DllClose($dll)谢谢楼上提示,把SLEEP关了,已经解决... 回复 9# wangwen916
禁用SLEEP?等着CPU占用率狂飙吧。
至少也应该SLEEP(10)啊。
最好还是拦截消息吧。 回复 10# 3mile
基本的 消息循环 结构
下面是 消息循环 的基本结构代码:
While 1
$msg = GUIGetMsg()
...
...
WEnd
像上面这种循环周期非常短的脚本通常会把CPU占用推到高达 100%,幸运的是 GUIGetMsg 函数可在无事件等待时自动闲置CPU.另外千万 不要 因为怕增加CPU压力而自己添加休眠语句(Sleep)到脚本中,这么做只会让GUI响应迟钝.
帮助文件中的一句话.应该引起楼上的重视....谢谢鼓掌! 回复 11# wangwen916
关键是你有使用GUIGetMsg 函数吗? #include <MouseOnEvent.au3>
终于找到这个函数就可以了 右键菜单啊
页:
[1]