Autohotkey ssms查询窗口中的自动热键

Autohotkey ssms查询窗口中的自动热键,autohotkey,sql-server-2008,Autohotkey,Sql Server 2008,在SQLServerManagementStudio 2008中,是否有一种从各个查询窗口获取信息的方法?我在网上找到了很多关于MDI窗口的信息,但根据我的实验,大部分信息在ssms中都不起作用。我找到的最佳解决方案如下所示: SetTitleMatchMode, RegEx DetectHiddenWindows On w = WinGet id, list, sql ;WinGet id, list, ahk_class VBBubble Loop %id% { WinGetTitl

在SQLServerManagementStudio 2008中,是否有一种从各个查询窗口获取信息的方法?我在网上找到了很多关于MDI窗口的信息,但根据我的实验,大部分信息在ssms中都不起作用。我找到的最佳解决方案如下所示:

SetTitleMatchMode, RegEx
DetectHiddenWindows On
w =
WinGet id, list, sql
;WinGet id, list, ahk_class VBBubble
Loop %id%
{
    WinGetTitle t, % "ahk_id " id%A_Index%
    w .= "`n" t
}
MsgBox %w%
DetectHiddenWindows Off
这将始终返回我打开的查询窗口之一的标题;我假设我可以使用该ahk_id获取有关窗口的其他信息。问题是,无论打开了多少个查询,它都只返回一个结果。如果它一直排在第一位,那就更好了;事实上,这对我来说是完美的。然而,它似乎随机找到一个查询窗口,而不考虑实际的顺序或我找到的任何东西

这很奇怪也很烦人。任何帮助都将不胜感激


Rob

您是否尝试过按窗口的类别而不是标题检索窗口?或者,您可以尝试ahk_exe。您可以使用WindowSpy分析窗口。您的目标是什么?你想实现什么?@AndreiRantsevich目前,我正试图重新使用Escape键来取消正在运行的查询,而不删除其现有功能。理想情况下,只有当顶部查询窗口当前正在执行查询时,它的行为才会有所不同。如果我能持续地获得关于顶部查询窗口的信息,我毫无疑问我会找到其他我可以用它做的事情。@MCL我现在有了。该类看起来是“VBBubble”,但用
WinGet id,list,ahk_class VBBubble
替换上面的WinGet命令不会更改结果。进程名称显示为Ssms.exe,使用
WinGet id,list,ahk_exe Ssms.exe
返回196个结果,其中188个为空字符串。其他八个包含在ssms主窗口中;一些我认为是子组件的东西(“对象浏览器”);还有几个我不认识(“M”,“GDI+窗口”);但是没有什么和我要找的相似的。Window Spy似乎只想告诉我有关父窗口的情况。我的意见是,您需要编写一个加载项来实现所需的功能。我自己开发了一个ssms插件(请参阅我的个人资料信息),只能告诉您这是一项相当复杂的任务。您可以找到并重新使用ssms 2008和2012的多个外接程序示例。其中一些存在于codeplex上。