我有一个C#应用程序,当用户单击按钮时,将打开具有指定服务器和数据库连接的SQL Server Management Studio查询编辑器.我想要做的是能够拥有相同的功能,但是已经运行的SSMS实例(不启动新进程).
我的代码到目前为止:
if (IsProcessOpen("Ssms") == false)
{
Process ssms = new Process();
ssms.StartInfo.FileName = "C:\\Program Files (x86)\\Microsoft SQL Server\\110\\Tools\\Binn\\ManagementStudio\\Ssms.exe";
ssms.StartInfo.Arguments = "-S " + StaticVariables.Getserver + " -d " + StaticVariables.Getdatabase;
ssms.Start();
}
else
{
//In already running SSMS process, open connection to server and database with new query window.
}
Run Code Online (Sandbox Code Playgroud)
就我的研究而言,没有可用于与现有 SSMS 流程交互的 API。(http://stackoverflow.com/questions/2334435/how-do-i-programmatically-open-a-new-tab-in-an-open-instance-of-sql-management-s)
您可以尝试进行涉及 SendKeys 的黑客攻击,但这会有一个缺点,即不知道 SSMS 窗口的当前状态(如果它打开了任何活动窗口或其他任何内容)
如果您可以分享最初的要求,我们可能会考虑一些更好的替代方案。