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
我正在尝试编写一个脚本,当单击 "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