Autohotkey 使用相同的热键打开和关闭程序(自动热键?)

Autohotkey 使用相同的热键打开和关闭程序(自动热键?),autohotkey,hotkeys,Autohotkey,Hotkeys,我试图在Windows中用相同的快捷键打开和关闭一个程序(例如记事本),比如说Strg+Alt+X。因此,当程序关闭时,我希望用“X”打开它,当它打开时,我希望用“X”关闭它 这真的很容易做到两个热键,一个打开,一个关闭程序。但我不知道如何解决同一个热键。有人能给我指出正确的方向吗?也许使用自动热键可以做到这一点?我相信这正是您要寻找的。我创建了StartClose方法,如果您还想为其他应用程序制作热键,可以在将来使用。您可以使用WindowSpy查找窗口标题和类,右键单击自动热键任务栏图标可以

我试图在Windows中用相同的快捷键打开和关闭一个程序(例如记事本),比如说Strg+Alt+X。因此,当程序关闭时,我希望用“X”打开它,当它打开时,我希望用“X”关闭它


这真的很容易做到两个热键,一个打开,一个关闭程序。但我不知道如何解决同一个热键。有人能给我指出正确的方向吗?也许使用自动热键可以做到这一点?

我相信这正是您要寻找的。我创建了
StartClose
方法,如果您还想为其他应用程序制作热键,可以在将来使用。您可以使用WindowSpy查找窗口标题和类,右键单击自动热键任务栏图标可以找到该窗口

x::StartClose("ahk_class Notepad", "notepad.exe")

StartClose(title, exe)
{
    IfWinExist, %title%
        WinClose
    else
    {
        Run, %exe%
        WinActivate
    }
}

埃利奥特的回答为我指明了正确的方向(我对
AutoHotKey
语法一无所知)。他的方法使用了窗口标题,这对于不会最小化系统托盘的程序来说非常有效。但如果您有这样的程序,最好根据进程ID关闭它:

^!x::StartClose("XMouseButtonControl.exe")

StartClose(exe)
{
Process, Exist, %exe% ; check to see if program is running
If (ErrorLevel = 0) ; If program is not running -> Run
    {
    Run, %exe%
    }
Else ; If program is running, ErrorLevel = process id for the target program -> Close
    {
    Process, Close, %ErrorLevel%
    }
}

谢谢埃利奥特,这为我指明了正确的方向。但是,对我来说,最好根据进程名打开并终止程序。我在回答中采用了你的方法。