我一直试图让我的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将它们输出给我,所以它们为空)。有人知道解决这个问题的方法吗?
答案 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