- 版本 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
- #指令
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
#If [AHK_L]
创建上下文相关的热键和热字串。这样的热键会根据表达式的结果执行不同的操作 (或什么都不做).
#If [, Expression ]
参数
- Expression
任何有效的 表达式.
基本操作
可以使用任何有效的表达式定义激活热键的上下文. 例如:
"ahk_class Notepad") or WinActive(MyWindowTitle) #Space::MsgBox You pressed Win+Spacebar in Notepad or %MyWindowTitle%.
与 #IfWin 指令一样, #If 是与位置有关的: 它会作用于脚本中实际在它后面的所有热键和热字串. #If 和 #IfWin 也是互斥的; 即只有最近的 #If 或 #IfWin 会起作用.
要关闭上下文相关性, 请指定 #If 或任一 #IfWin 指令但省略所有参数. 例如:
#If
一般说明
当按下的按键组合形成了热键时, "https://www.wenjiangs.com/doc/AutoHotkey-_IfTimeout">超时后系统才会响应键盘或鼠标输入。在计算这个表达式过程中发送键击或鼠标点击(例如来自它所调用的函数)可能导致复杂的情况,应该避免这样做。
由于 AutoHotkey 设计的问题,在单个键盘或鼠标事件时可能会计算这个表达式两次。
由于前面所说的原因,应该把这个表达式设计为尽快结束并且不会产生副作用。
[AHK_L 53+]: A_ThisHotkey 和 A_TimeSinceThisHotkey 包含与当前正在求值的 #If 表达式的热键相关的值.
[v1.0.95.00+]: A_PriorHotkey 和 A_TimeSincePriorHotkey 临时包含了与对应的 "This" 变量包含的前一个值.
相关
大部分 #IfWin 指令的行为属性也适用于 #If.
可以使用 #IfTimeout 覆盖默认的超时时间值.
示例
; 示例 1: 在任务栏上滚动鼠标来调节音量. "ahk_class Shell_TrayWnd") WheelUp::Send {Volume_Up} WheelDown::Send {Volume_Down} MouseIsOver(WinTitle) { MouseGetPos,,, Win return WinExist(WinTitle . " ahk_id " . Win) } ; 示例 2: 在所有的编辑控件中的轻松删除单词的快捷键. "Edit") ^BS::Send ^+{Left}{Del} ^Del::Send ^+{Right}{Del} ActiveControlIsOfClass(Class) { ControlGetFocus, FocusedControl, A ControlGet, FocusedControlHwnd, Hwnd,, %FocusedControl%, A WinGetClass, FocusedControlClass, ahk_id %FocusedControlHwnd% return (FocusedControlClass=Class) } ; 示例 3: 与上下文不相关的热键. #If Esc::ExitApp ; 示例 4: 动态热键. 需要示例 1. NumpadAdd:: Hotkey, If, MouseIsOver("ahk_class Shell_TrayWnd") if (doubleup := !doubleup) Hotkey, WheelUp, DoubleUp else Hotkey, WheelUp, WheelUp return DoubleUp: Send {Volume_Up 2} return
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论