我想编写一个AutoHotkey脚本,该脚本循环X次密钥。
例如,这是一个脚本,它用文件资源管理器中的ENTER
键的功能覆盖了F2
键的功能。
#IfWinActive ahk_class CabinetWClass
Enter::
Send, {F2}
#IfWinActive ahk_class CabinetWClass
Enter::
Send, {ENTER}
#IfWinActive
目标是按ENTER
重命名选择的文件,然后按ENTER
确认重命名。在刚刚重命名的同一文件上按ENTER
,应再次发送F2
键(以防出现输入错误)。
当前第二个块不起作用,因为我要发送相同的密钥,该如何解决?
答案 0 :(得分:1)
基本上,您似乎正在尝试将不同的任务分配给同一热键,并且由于这是分别完成的,因此ahk选择了其中一个任务并仅与该任务一起运行。如果可以在热键中使用循环,那么我建议使用此循环在两个预期结果之间循环。请参见下面的示例:
temp:= 1
enter::
if(temp==1)
{
Send, {ENTER}
temp:=2
}
else if(temp==2)
{
Send, {F2}
temp:=1
}
return
1::
Temp:=1
return
2::
temp:=2
return
^x::ExitApp
我还添加了1/2的热键,以便您手动确定结果,而不是在遇到任何问题时专门为其指定结果。 哦,然后按ctrl + x关闭宏。
答案 1 :(得分:1)
在这种情况下,KeyWait命令是您的朋友。
如何处理第二个 Enter
仍有空间#IfWinActive ahk_class CabinetWClass
$Enter::
sleep,100 ; giving time to detect the first Enter
Send, {F2}
Keywait, Enter, T5 D ; wait 5 seconds for the Enter to be pressed down
If (ErrorLevel == 0)
{
Send, {Enter}
sleep 200
Send, {F2}
}
else
{
traytip, , timeout ; Enter was not pressed down in 5 seconds
}
return
答案 2 :(得分:0)
您正在尝试重新绑定两次Enter键。 重新绑定键就像说“当我按下此键时,执行此操作:”-在这种情况下,它位于#IfWinActive下,因此更像是“当此窗口打开并且我按下此键...时”
分解后,您会看到“按Enter时按F2”以及“按Enter时按Enter”
您想要实现的是使重绑定成为有条件的-即它仅在特定条件下发送F2。
如果没有更多背景信息,很难知道如何提供帮助。有什么理由不能使用其他按键组合?像Ctrl + Shift + Enter?
类似的东西:
+^Enter::send, {F2}