对#HotIf的困惑 Topic is solved

遇到了问题?请先进行搜索(中文和英文),然后在此提问

Moderators: tmplinshi, arcticir

xerzsh
Posts: 12
Joined: 19 Jul 2023, 18:22

对#HotIf的困惑

13 Oct 2023, 20:58

Code: Select all

Capslock::ESC 
; 将分号键映射为退格键
SC027::Backspace
 #HotIf WinActive("ahk_exe Code.exe") 
!SC027::Send ":" 
+SC027::Send ";" 
Capslock & SC027::Send ";" 
#HotIf 
!SC027::Send ";"
+SC027::Send ":"
明明我在第一句将CapsLock键映射为了esc键,可为什么还是会执行其切换大小写的功能?而且将#HotIf后的代码全部删除后就不会了,这是为什么?另外这一行代码:

Code: Select all

+SC027::Send ";"
为什么会导致每按一次分号键(sc027对应分号键),输入法的中英文就被切换?
谢谢各位!
User avatar
thqby
Posts: 565
Joined: 16 Apr 2021, 11:18
Contact:

Re: 对#HotIf的困惑

19 Oct 2023, 08:25

Code: Select all

Capslock::ESC
Capslock & SC027:: Send ";"

Code: Select all

LShift::ESC
LShift & SC027:: Send ";"
有类似代码的,会在第一个按下时触发,跟#hotif无关
@xerzsh
Guest

Re: 对#HotIf的困惑

19 Oct 2023, 19:43

thqby wrote:
19 Oct 2023, 08:25

Code: Select all

Capslock::ESC
Capslock & SC027:: Send ";"

Code: Select all

LShift::ESC
LShift & SC027:: Send ";"
有类似代码的,会在第一个按下时触发,跟#hotif无关
@xerzsh
可是受

Code: Select all

 #HotIf WinActive("ahk_exe Code.exe") 
的影响,

Code: Select all

Capslock & SC027:: Send ";"
不应该只会在code.exe这个窗口生效吗?
User avatar
thqby
Posts: 565
Joined: 16 Apr 2021, 11:18
Contact:

Re: 对#HotIf的困惑  Topic is solved

19 Oct 2023, 21:38

热键触发在前,再根据热键的hotif条件决定触发还是忽略
Guest

Re: 对#HotIf的困惑

20 Oct 2023, 08:32

thqby wrote:
19 Oct 2023, 21:38
热键触发在前,再根据热键的hotif条件决定触发还是忽略
明白了。
当热键, 鼠标或控制器按钮组合被按下时, #HotIf 表达式被计算以确定热键是否应该被激活.

注意: 脚本不应假定表达式只在按键被按下时才被计算(见下文).

只要程序需要知道热键是否被激活, 表达式也可以被计算. 例如, #HotIf 表达式作用于一个自定义组合热键(如 a & b::), 当按下前缀按键(这个例子中的 a) 时, 表达式将会计算一次, 计算结果将决定组合热键是否起作用.

Return to “请求帮助”

Who is online

Users browsing this forum: No registered users and 18 guests