找回密码
 加入
搜索
查看: 2484|回复: 4

[AU3基础] 关于SEND 发送按键 不弹起的提问。![已解决]

[复制链接]
发表于 2012-5-2 19:51:43 | 显示全部楼层 |阅读模式
本帖最后由 chengjinn 于 2012-7-8 08:21 编辑
Global $DM = ObjCreate("dm.dmsoft")

If IsObj($DM) Then
        $ver = $DM.Ver()
        ConsoleWrite('当前大漠插件版本:' & $ver & @CRLF)
Else
        RegDM()
        ConsoleWrite('当前大漠插件版本:' & $ver & @CRLF)
        Exit
EndIf
;================================================
;方法:FindWindow
;功能:获取窗口句柄 
;参数:窗口类,标题
;返回:失败返回0,成功返回句柄(和au3获取的句柄有别)
;================================================
$Hwnd = $DM.FindWindow("", "ERzHlhc")
If $Hwnd <> 0 Then MsgBox(0, 0, $Hwnd)

;================================================
;方法:BindWindow(亮点)
;功能:绑定窗口
;参数:窗口句柄,取色方案,鼠标方案,按键方案,后台模式
;返回:失败返回0,成功返1
;提示:取色方案('normal', 'gdi', 'gdi2', 'dx', 'dx2', 'dx3')
;提示:鼠标方案('normal', 'windows', 'windows2', 'windows3', 'dx', 'dx2')
;提示:键盘方案('normal', 'windows','dx')
;提示:normal为前台,推荐使用按键精灵采用的Windows消息模拟方式,其他模式参考大漠插件手册
;================================================
$Bind = $DM.BindWindow($Hwnd, 'normal', 'windows', 'windows', 0)
If $Bind <> 0 Then MsgBox(0, 0, '绑定成功')

;================================================
;方法:SendString(如无效尝试老方法SendString2方法)
;功能:向指定窗口发送文本数据 
;参数:窗口句柄,文本数据
;返回:失败返回0,成功返1
;提示:窗口最小化无效,针对窗口操作可不绑定窗口(因为有句柄嘛)
;================================================
;$DM.SendString($Hwnd, '大漠插件——发送字符串测试')

;================================================
;方法:KeyPress
;功能:按下指定的虚拟键码 
;参数:虚拟键码
;返回:失败返回0,成功返1
;提示:窗口最小化无效,针对窗口操作必须绑定窗口
;提示:虚拟键码参考http://baike.baidu.com/view/555571.htm
;================================================
;$DM.KeyPress(13);回车键

;方法:KeyDown
;功能:按住指定的虚拟键码 
;参数:虚拟键码
;返回:失败返回0,成功返1
;提示:窗口最小化无效,针对窗口操作必须绑定窗口
;提示:在聊天窗口测试只会出现一个a,不知3D游戏里是否能实现旋转地图呢?
;================================================
While 1
$DM.KeyDown(65) ;a键
$DM.KeyUp(65)
Sleep(1000)
WEnd

;================================================
;方法:KeyUp
;功能:弹起指定的虚拟键码 
;参数:虚拟键码
;返回:失败返回0,成功返1
;提示:窗口最小化无效,针对窗口操作必须绑定窗口
;================================================
$DM.KeyUp(65)

Func RegDM()
        Local $dm_dll = @ScriptDir & '\dm.dll'
        ;以下的判断似乎对#RequireAdmin无效 ,
        If @OSVersion = ('WIN_2008R2' Or 'WIN_7' Or 'WIN_2008' Or 'WIN_VISTA') Then
                ;#RequireAdmin ;这个脚本需要完全控制权限
        EndIf
        RunWait(@ComSpec & ' /c regsvr32 /s ' & $dm_dll, '')
EndFunc
        
        
问个问题 。!
当我用SEND在一直发送一个按键的时候。
手动按住 键盘CTRL 或 SHIFT 或ALT 或WIN 键 再松手时。
假如我按了SHIFT键 那么手松开了SHIFT键。但是电脑上SHIFT键还是在DOWN 状态下。
问一下 这是为什么。要怎么避免这种情况。


在论坛上面找到了个大漠插件。调用插件发送按键不会出现上述问题 !
============================================
发表于 2012-5-2 20:34:16 | 显示全部楼层
回复 1# chengjinn


    sleep的时间长一些试试
 楼主| 发表于 2012-5-2 22:12:10 | 显示全部楼层
试过了。没有用。!!刚刚在论坛上面找到了个大漠插件。调用插件发送按键不会出现上述问题 !
期待有高人用AU3的发送按键解决这种问题 〈〉!
发表于 2012-5-3 06:40:01 | 显示全部楼层
楼主请出马- -!
发表于 2012-8-2 17:11:06 | 显示全部楼层
大漠插件哈哈,也研究啊
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-15 00:51 , Processed in 0.079955 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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