AutoHotKey如果语句不起作用

时间:2015-11-03 21:03:11

标签: if-statement syntax autohotkey

这有什么问题?

if A_OSVersion = WIN_7 or A_OSVersion = WIN_XP
   {
   MsgBox, Win7 or XP
} else {
   if WinActive("ahk_exe Explorer") {
   !f::!h
   }
}

目标是在我运行Windows 8,8.1或10时在资源管理器中用Alt + H替换Alt + F,并且我在Windows 7计算机上进行测试,因此代码不应该是完全运行,但热键确实运行,MsgBox没有。我是否需要重新排序以使其正常工作?语法看起来对我来说,但我对AHKscript的语法很难。

赞赏我的评论!

2 个答案:

答案 0 :(得分:1)

!f::!h

不是命令,它是密钥重映射,因此隐式包含return。您不能在可执行文件中使用它。有关详细信息,请参阅下面的http://ahkscript.org/docs/misc/Remap.htm#Remarks

你不想在应该执行的行之间某处返回,是吗。

(这主要是我的回答的副本here

对于context-sensitive个热键,请使用预处理程序指令:

#if (A_OSVersion = "WIN_7" or A_OSVersion = "WIN_XP") and not winActive("ahk_exe Explorer")
   !f::!h
#if

答案 1 :(得分:1)

#if winActive("ahk_exe Explorer") and !(A_OSVersion = "WIN_7" or A_OSVersion = "WIN_XP")
  !f::!h
#if

要在正常的脚本流程中执行此操作,您需要使用热键命令,但它不会是重映射,而是发送另一组键的热键......