Autohotkey 自动热键-不同程序处于活动状态时的不同命令

Autohotkey 自动热键-不同程序处于活动状态时的不同命令,autohotkey,Autohotkey,我试图编写一个脚本,当单击“SHIFT+ALT+I”时,它会在MicrosoftWord处于活动状态时发送一个特定命令,如果MicrosoftPowerPoint处于活动状态(两个程序同时运行),则会发送另一个命令 代码应该类似于: "if Microsoft Word is open" +!i:: MouseMove, 300,50,0 MouseClick, left "if Microsoft Powerpoint is open" +!i:: MouseMove, 600,100,0

我试图编写一个脚本,当单击“SHIFT+ALT+I”时,它会在MicrosoftWord处于活动状态时发送一个特定命令,如果MicrosoftPowerPoint处于活动状态(两个程序同时运行),则会发送另一个命令

代码应该类似于:

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

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

有什么(简单的)方法吗?

是的,这很简单

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

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

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

Return

请注意,此函数检查窗口标题,因此在本例中,窗口标题中有“Microsoft Word”字样。请在此阅读此函数:

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

以活动窗口为条件定义F1宏:

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
看见