- 版本 v1.1.15.01
- 指南和概述
- 常见问题(FAQ)
- 按字母排序的命令和函数索引
- AutoHotkey 脚本展示
- 变更和新功能
- 基本用法和语法
- 迁移到 AutoHotkey 1.1(AutoHotkey_L)
- 环境管理
- 本机代码互操作
- 文件、目录和磁盘管理
- Drive
- DriveGet
- DriveSpaceFree
- FileAppend
- FileCopy
- FileCopyDir
- FileCreateDir
- FileCreateShortcut
- FileDelete
- FileEncoding [AHK_L 42+]
- FileGetAttrib
- FileGetShortcut
- FileGetSize
- FileGetTime
- FileGetVersion
- FileInstall
- FileMove
- FileMoveDir
- FileOpen [AHK_L 42+]
- FileReadLine
- FileRead
- FileRecycle
- FileRecycleEmpty
- FileRemoveDir
- FileSelectFile
- FileSelectFolder
- FileSetAttrib
- FileSetTime
- IfExist / IfNotExist
- IniDelete
- IniRead
- IniWrite
- Loop(文件和文件夹)
- Loop(读取文件内容)
- SetWorkingDir
- SplitPath
- 流程控制
- 内置函数
- GUI、MsgBox、InputBox 及其他对话框
- 鼠标和键盘
- 鼠标和键盘
- #InstallKeybdHook
- #InstallMouseHook
- #KeyHistory
- BlockInput
- Click [v1.0.43+]
- ControlClick
- ControlSend / ControlSendRaw
- CoordMode
- GetKeyState
- KeyHistory
- KeyWait
- Input
- MouseClick
- MouseClickDrag
- MouseGetPos
- MouseMove
- Send / SendRaw / SendInput / SendPlay / SendEvent: 发送按键和点击
- SendLevel [v1.1.06+]
- SendMode [v1.0.43+]
- SetDefaultMouseSpeed
- SetKeyDelay
- SetMouseDelay
- SetCapsLockState/SetNumLockState/SetScrollLockState
- SetStoreCapslockMode
- 数学相关
- 屏幕管理
- 杂项命令
- 进程管理
- 注册表管理
- 声音命令
- 字符串管理
- 窗口管理
- 控件
- 窗口组
- #WinActivateForce
- DetectHiddenText
- DetectHiddenWindows
- SetTitleMatchMode
- SetWinDelay
- StatusBarGetText
- StatusBarWait
- WinActivate
- WinActivateBottom
- WinClose
- WinGet
- WinGetActiveStats
- WinGetActiveTitle
- WinGetClass
- WinGetPos
- WinGetText
- WinGetTitle
- WinHide
- WinKill
- WinMaximize
- WinMinimize
- WinMinimizeAll / WinMinimizeAllUndo
- WinMove
- WinRestore
- WinSet
- WinSetTitle
- WinShow
- WinWait
- WinWaitActive / WinWaitNotActive
- WinWaitClose
- #指令
MouseClickDrag
点击并按住指定的鼠标按钮,接着移动鼠标到目标坐标,然后松开按钮。
MouseClickDrag, WhichButton, X1, Y1, X2, Y2 [, Speed, R]
参数
- WhichButton
要点击的按钮: Left, Right, Middle (或这些单词的首个字母). 对于第四个按钮使用 X1,对第五个则用 X2。例如:
MouseClickDrag, X1, ...
。要避免受用户通过系统控制面板对左右键功能交换的设置的影响, 请使用 Click 命令 代替.
- X1, Y1
拖动的起始位置的 x/y 坐标, 可以为 表达式 (在开始拖动前会移动鼠标到这个坐标). 坐标相对于活动窗口, 除非曾使用 CoordMode 改变了这个设置. 如果省略, 则使用鼠标的当前位置.
- X2, Y2
拖动的目标位置的 x/y 坐标, 可以为 表达式. 坐标相对于活动窗口, 除非曾使用 CoordMode 改变了这个设置.
- Speed
移动鼠标的速度,介于 0(最快)和 100(最慢)之间,可以为表达式。注:速度为 0 表示瞬时移动鼠标到目标位置。如果省略,则使用默认速度(通过 SetDefaultMouseSpeed 设置,若为设置则使用 2)。
在 SendInput/Play 模式 中会忽略 Speed; 它们会瞬时移动鼠标到目标位置 (不过 SetMouseDelay 有适用于 SendPlay 的模式). 要显示鼠标移动轨迹(例如使用脚本向观众进行演示时),请使用
SendEvent {Click 100, 200}
或SendMode Event
(可以和 BlockInput 联合使用)。- R
如果此参数为字母 R, 则会把 X1 和 Y1 坐标视为距离当前鼠标位置的偏移. 换句话说, 会把光标从当前位置往右移动 X1 像素 (负值则往左) 且往下移动 Y1 像素 (负值则往上).
同样地, 会把 X2 和 Y2 坐标视为距离 X1 和 Y1 坐标的偏移. 例如,后面的例子中会首先把鼠标从起始位置往下和往右移动 5 个像素,然后从这个位置往下和往右拖动 10 个像素:
MouseClickDrag, Left, 5, 5, 10, 10, , R
。
备注
此命令的发送模式由 SendMode 设置.
还可以使用其他 Send 命令进行拖动, 这样更灵活, 因为可以通过命令名指定发送的模式. 例如:
SendEvent {Click 6, 52, down}{click 45, 52, up}
上面这种方法的另一个好处是与 MouseClickDrag 不同, 它不受用户通过系统控制面板对左右键功能交换的设置的影响.
SendPlay 模式 生成的鼠标事件可以比其他模式适应更大范围的游戏. 然而, 使用 SendPlay 进行拖动操作在 RichEdit 控件中 (可能还有其他的) 例如 WordPad 和 Metapad, 可能无法工作.
某些应用程序和游戏在鼠标移动过快时可能会跟踪困难. 可以使用 SetDefaultMouseSpeed 的 speed 参数来降低鼠标的速度 (仅对默认的 SendEvent 模式 有效).
可以使用 BlockInput 命令防止用户对鼠标的任何物理操作扰乱由鼠标命令生成的模拟鼠标事件. 不过, 在 SendInput/Play 模式中通常不需要这个命令, 因为它们会自动延迟用户对鼠标的物理操作到发送之后.
在每次鼠标按下事件和鼠标弹起事件后都会有一个自动的延时 (不包括 SendInput 模式). 此延时同样发生在拖动期间鼠标的移动之后. 使用 SetMouseDelay 可以改变延时的长度.
相关
CoordMode, SendMode, SetDefaultMouseSpeed, SetMouseDelay, Click, MouseClick, MouseGetPos, MouseMove, BlockInput
示例
MouseClickDrag, left, 0, 200, 600, 400 ; 下面的例子打开微软的画图工具并画一个小房子: Run, mspaint.exe WinWaitActive, ahk_class MSPaintApp,, 2 if ErrorLevel return MouseClickDrag, L, 150, 250, 150, 150 MouseClickDrag, L, 150, 150, 200, 100 MouseClickDrag, L, 200, 100, 250, 150 MouseClickDrag, L, 250, 150, 150, 150 MouseClickDrag, L, 150, 150, 250, 250 MouseClickDrag, L, 250, 250, 250, 150 MouseClickDrag, L, 250, 150, 150, 250 MouseClickDrag, L, 150, 250, 250, 250
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论