- 版本 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
- #指令
BlockInput
禁用或启用用户通过键盘和鼠标与计算机交互的能力。
BlockInput, Mode
参数
- Mode
模式 1: 下列单词的其中一个:
On: 阻止用户与计算机交互 (鼠标和键盘输入都无效).
Off: 重新启用输入.
模式 2:此模式的操作独立于其他两种。例如,
BlockInput On
会继续阻塞输入直到使用了BlockInput Off
,即使在下面某个单词仍然有效的情况下。Send: 正在执行 Send 或 SendRaw 命令 (仅对于传统的 SendEvent 模式) 时, 用户的键盘和鼠标输入被忽略. 这样避免了用户的键击扰乱模拟键击流. 当 Send 结束时,会重新启用输入(在之前没有使用
BlockInput On
阻塞的情况下)。Mouse: 正在执行 Click, MouseMove, MouseClick 或 MouseClickDrag 命令 (仅对于传统的 SendEvent 模式) 时, 用户的键盘和鼠标输入被忽略. 这样避免了用户的鼠标移动和点击扰乱模拟鼠标事件. 当鼠标命令结束时,会重新启用输入(在之前没有使用
BlockInput On
阻塞的情况下)。SendAndMouse: 上面两种模式的组合.
Default: 同时关闭 Send 和 Mouse 模式, 但不改变输入阻塞的当前状态. 例如,如果
BlockInput On
当前有效,那么使用BlockInput Default
不会关闭它。模式 3(需要 v1.0.43.11+):此模式的操作独立于其他两种。例如,如果
BlockInput On
和BlockInput MouseMove
都有效,那么鼠标移动会被阻塞直到这两者被同时关闭。MouseMove: 鼠标光标不会随用户对鼠标的物理移动而移动 (DirectInput 应用程序可能是个例外). 脚本中首次使用此命令时, 会安装 鼠标钩子 (在还没有安装时). 同时, 脚本变成 持续运行的, 这意味着应该使用 ExitApp 结束脚本. 鼠标钩子会一直保持加载状态,直到下一次使用 Suspend 或 Hotkey 命令,此时如果没有任何热键或热字串需要那么它会被移除(请参阅 #Hotstring NoMouse)。
MouseMoveOff: 允许用户移动鼠标光标.
备注
比起 BlockInput,通常优先考虑使用 SendMode Input
或 SendMode Play
会更好,这样键击和鼠标点击会变得不可中断。这是因为与 BlockInput 不同, 这些模式不会丢弃发送期间用户输入的内容; 作为替代, 这些键击被缓冲起来在之后发送. 不使用 BlockInput 也避免了下一段落所描述的需要解决的粘滞按键问题.
如果在用户按住按键时启用 BlockInput, 可能会导致这些键 "卡住". 通过等待这些按键释放后才启用 BlockInput 可以避免此问题, 与本例一样:
^!p:: KeyWait Control ; 等待按键释放. 为每个热键修饰符使用一次 KeyWait 命令. KeyWait Alt BlockInput On ; ... 发送键击和鼠标点击 ... BlockInput Off return
每当发送 ALT 事件时, 输入阻塞会自动和临时禁用 (之后重新启用).
BlockInput 生效时,用户的输入被拦截,不过 AutoHotkey 可以模拟键击和鼠标点击。然而由于 Windows API 的特性,按下 Ctrl+Alt+Del 将重新启用输入。
钩子热键 的某些类型在 BlockInput 启用时仍然可以被触发. 例子包括 MButton
(鼠标钩子)和 LWin & Space
(含有除修饰符$#
外的明确前缀的键盘钩子)。
当脚本关闭时会自动重新启用输入.
相关
SendMode, Send, Click, MouseMove, MouseClick, MouseClickDrag
示例
BlockInput, on Run, notepad WinWaitActive, Untitled - Notepad Send, {F5} ; 粘贴时间和日期 BlockInput, off
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论