Autohotkey - 当不同的程序处于活动状态时使用不同的命令

Autohotkey - Different commands when different programs are active

我正在尝试编写一个脚本,当单击 "SHIFT+ALT+I" 时,它会在 Microsft Word 处于活动状态时发送一个特定命令,而在 Microsoft PowerPoint 处于活动状态时发送另一个命令(两个程序同时 运行时间)。

代码应该是这样的:

"if Microsoft Word is open"
+!i::
MouseMove, 300,50,0
MouseClick, left

"if Microsoft Powerpoint is open"
+!i::
MouseMove, 600,100,0
MouseClick, left

有什么(简单的)方法可以做到这一点吗?

是的,这很简单。

首先: 您建议的结构是可能的,但不能使用标准的热键触发器。您 可以 有一个计时器 运行,它检查 window 是否打开,然后检测按键并采取行动。或者您确实可以使用@user 已经链接到的内容。 我认为让一个热键触发 window 检查然后采取相应的行动会更加整洁和高效。

代码将如下所示:

+!i::
IfWinActive, Microsoft Word
{
MouseMove, 300,50,0
MouseClick, left
}

IfWinActive, Microsoft Powerpoint
{
MouseMove, 600,100,0
MouseClick, left
}

Return

请注意,此函数会检查 window 标题,因此在此示例中 window 标题中的字面意思是 "Microsoft Word"。在此处阅读此功能:https://autohotkey.com/docs/commands/WinActive.htm

这是定义特定于应用程序的热键的正确方法

定义以活动为条件的 F1 宏 window:

SetTitleMatchMode 2     ; All #If statements match anywhere in title

#IfWinActive Microsoft Word
  F1:: MsgBox F1 pressed in Word
#IfWinActive Notepad
  F1:: MsgBox F1 pressed in Notepad
#IfWinActive
  F1:: MsgBox F1 pressed elsewhere