本帖最后由 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 状态下。
问一下 这是为什么。要怎么避免这种情况。
在论坛上面找到了个大漠插件。调用插件发送按键不会出现上述问题 !
============================================ |