使用AutoHotKey

时间:2018-07-26 16:10:20

标签: ssms autohotkey

我一直试图让我的AHK脚本在SSMS2017中运行,以执行一个(多行)SQL语句(类似于SQL Developer中的Ctrl + Enter)。

这个想法是我搜索最后一个(相对于最后一个插入符的位置)“;”在我的代码中,突出显示文本直到下一个文本,然后用F5执行。

到目前为止,我的脚本看起来像这样:

^ENTER::

CoordMode, Caret, Screen
CoordMode, Mouse, Screen

send ^f

sendraw `;

send {Enter}

send {Esc}

send +{F3}

send {Right}

X1 = A_CaretX
Y1 = A_CaretY

send {F3}

send {Right}

X2 = A_CaretX
Y2 = A_CaretY

MouseClickDrag, Left, X1,Y1,X2,Y2, 100

send {F5}

return
我认为至少在语法上应该有效的

。但事实并非如此。显然是因为A_CaretX和A_CaretY似乎是空的(我让AHK将它们输出给我,所以它们为空)。有人知道解决这个问题的方法吗?

1 个答案:

答案 0 :(得分:0)

A_CaretX和A_CaretY在SQL Server Management Studio中不起作用,因为“查询”窗口不是普通的Textbox控件,因此您将永远无法使用Carets获取信息。

执行此操作的另一种方法是从查询窗口复制所有文本,进行解析,然后遍历解析的信息,粘贴并运行每个解析的文本。

^ENTER::
Send ^a
Send ^c
ClipWait 1 ; Wait for clipboard to be filled

Queries := ClipBoard

Loop, parse, Queries, ";"
{
  Send ^a
  Clipboard := A_LoopField
  Send ^v

  Sleep 100
  Send {F5}

  Sleep 1000 ; wait 1 second for query to finish
}

;Replace the text with the original text
Clipboard := Queries
Send ^a
Send ^v

Return