Autohotkey 自动热键运行/激活SQL server management studio

Autohotkey 自动热键运行/激活SQL server management studio,autohotkey,Autohotkey,大家好,我正在努力与自动热键和简单的键绑定 我试图实现的是,如果ssms未运行,请启动它,否则请设置此程序的焦点/活动状态。目前我有这样的想法: +!s:: StringCaseSense, On process, exist, Ssms.exe { If !errorLevel Run "C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\Ssms.exe" el

大家好,我正在努力与自动热键和简单的键绑定

我试图实现的是,如果ssms未运行,请启动它,否则请设置此程序的焦点/活动状态。目前我有这样的想法:

+!s::
StringCaseSense, On
process, exist, Ssms.exe
{
    If !errorLevel
        Run "C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\Ssms.exe"
    else 
        IfWinExist Microsoft SQL Server Management Studio
            WinActivate 
}

在我在ssms中创建/打开任何SQL脚本之前,这都可以正常工作。如何修复此脚本有什么想法吗?

该代码应该适合您:

+!s::
StringCaseSense, On
Process, Exist, Ssms.exe
if ErrorLevel
{
    IfWinExist, Microsoft SQL Server Management Studio
    {
        WinActivate
    }
}
else
{
    Run, C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\Ssms.exe
}
return
这里还有相同的代码,但适用于notepad.exe,我已经测试过,它运行良好:

+!s::
StringCaseSense, On
Process, Exist, notepad.exe
if ErrorLevel
{
    IfWinExist, Untitled - Notepad
    {
        WinActivate
    }
}
else
{
    Run, c:\Windows\notepad.exe
}
return

这是我所有快捷方式的简化版本。它使用一个函数(可以重用)。第一个参数是窗口标题中的文本。第二个是exe路径

SetTitleMatchMode, 2

+!s::ShowStart("Microsoft SQL Server Management Studio", "C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\Ssms.exe")

ShowStart(title, exe)
{
    IfWinExist, %title%
        WinActivate
    else
    {
        Run, %exe%,, UseErrorLevel
        If ErrorLevel
        {
            Msgbox, Exe not found.
            Return
        }
        WinActivate
    }
}

那个代码块在那里做什么<代码>过程不是条件语句!这就是为什么您要检查
ErrorLevel
。非常感谢。这工作得很好,它还减少了为多个程序实现相同功能所需的代码量+1我想分享一个稍微离题的说明,因为在我搜索解决方案时出现了这个页面。如果您的脚本不是以管理员身份运行,则自动热键的IfWinActive可能无法检测到SSM。