我想编写一个AutoHotkey脚本,它循环键X次。
例如,这是一个脚本,它在文件资源管理器中用ENTER
键的功能覆盖F2
键的功能。
#IfWinActive ahk_class CabinetWClass
Enter::
Send, {F2}
#IfWinActive ahk_class CabinetWClass
Enter::
Send, {ENTER}
#IfWinActive
目标是按ENTER
重命名选择文件,然后按ENTER
确认重命名。在刚重命名的同一文件上按ENTER
应再次发送F2
密钥(如果有拼写错误)。
目前第二个块不起作用,因为我发送相同的密钥,如何解决这个问题?
在这种情况下,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
基本上,您似乎正在尝试将不同的任务分配给同一个热键,并且由于这是单独完成的,因此选择其中一个任务并运行该任务并且仅运行该任务。如果循环可以在热键中使用,那么我建议使用它来在两个预期结果之间轮换。请看下面的例子:
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关闭宏。
您正尝试重新绑定输入密钥两次。重新绑定一个键就像是说“当我按下这个键时,执行此操作:” - 在这种情况下它位于#IfWinActive下,所以更像是“当这个窗口打开时我按下这个键......”
当你打破它时,你有“当我按下输入 - 按F2”以及“当我按下回车时,按回车” 你想要实现的是重新绑定条件 - 即它只在某些条件下发送F2。
没有更多的背景,很难知道如何提供帮助。你有什么理由不能使用不同的组合键吗?像Ctrl + Shift + Enter一样?
就像是:
+^Enter::send, {F2}