找回密码
 加入
搜索
查看: 6721|回复: 13

[AU3基础] 鼠标热键设置....类似键盘的HOTKEY[已解决]

 火.. [复制链接]
发表于 2010-8-20 19:15:47 | 显示全部楼层 |阅读模式
本帖最后由 wangwen916 于 2010-8-20 22:33 编辑

要做到程序运行后,点鼠标右键,立马显示"hello,world!",1S后窗口消失,继续等待右键.

参考: WM_RBUTTONDBLCLK
我不会用他,请高手指点,谢谢!

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-8-20 19:40:31 | 显示全部楼层
用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

评分

参与人数 1金钱 +20 收起 理由
水木子 + 20

查看全部评分

发表于 2010-8-20 19:44:35 | 显示全部楼层
回复 2# jhun
如果没有GUI的情况下呢?
 楼主| 发表于 2010-8-20 19:46:03 | 显示全部楼层
谢谢楼上的,补充一句,要鼠标在任意位置点右键都可以,你的代码只有在控件上才有效果...再帮忙想想办法...
发表于 2010-8-20 19:49:01 | 显示全部楼层
_ispressed 这个函数可以。
 楼主| 发表于 2010-8-20 19:56:31 | 显示全部楼层
回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)
这样的话,右键如果是点击,程序检测不到,按下右键的话,还是可以的...再想想办法,谢谢!
发表于 2010-8-20 20:04:35 | 显示全部楼层
回复 3# 水木子


    不好意思,理解错误LZ的意思,我以为是在GUI上面的右键
没GUI的话就只有拦截消息了
发表于 2010-8-20 20:41:21 | 显示全部楼层
回复 6# wangwen916


    sleep设小一点,比如10,5,点击照样能检测到
 楼主| 发表于 2010-8-20 22:32:10 | 显示全部楼层
#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关了,已经解决...
发表于 2010-8-20 22:53:35 | 显示全部楼层
回复 9# wangwen916

禁用SLEEP?等着CPU占用率狂飙吧。
至少也应该SLEEP(10)啊。
最好还是拦截消息吧。

评分

参与人数 1金钱 +15 收起 理由
afan + 15

查看全部评分

 楼主| 发表于 2010-12-6 15:36:47 | 显示全部楼层
回复 10# 3mile
基本的 消息循环 结构
下面是 消息循环 的基本结构代码:

While 1
  $msg = GUIGetMsg()
  ...
  ...
WEnd



像上面这种循环周期非常短的脚本通常会把CPU占用推到高达 100%,幸运的是 GUIGetMsg 函数可在无事件等待时自动闲置CPU.另外千万 不要 因为怕增加CPU压力而自己添加休眠语句(Sleep)到脚本中,这么做只会让GUI响应迟钝.

帮助文件中的一句话.应该引起楼上的重视....谢谢鼓掌!
发表于 2010-12-6 17:42:45 | 显示全部楼层
回复 11# wangwen916
关键是你有使用GUIGetMsg 函数吗?
 楼主| 发表于 2011-3-7 10:24:01 | 显示全部楼层
#include <MouseOnEvent.au3>
终于找到这个函数就可以了
发表于 2011-3-16 10:10:59 | 显示全部楼层
右键菜单啊
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-25 12:02 , Processed in 0.091624 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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