首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# SendKeys和2012 (SSMS)

C# SendKeys和2012 (SSMS)
EN

Stack Overflow用户
提问于 2013-06-05 21:41:45
回答 1查看 644关注 0票数 2

解决了!见解决方案

谢谢你能提供的任何帮助。非常感谢!

简单地说,:我试图用SendKeys.Send("^{v}")将Ctrl+V发送到2012年的SSMS,但它不起作用。它与记事本、UltraEdit、Word、Excel、Chrome都很好,你可以给它命名。它甚至可以在2010中工作。

In details:我有一个在后台运行的应用程序。使用键盘快捷方式,此应用程序将显示带有选项的弹出窗口。根据我选择的选项,它将与其相关的内容保存到剪贴板中。然后关闭弹出窗口,获取新的前台窗口(这应该是显示弹出窗口之前的窗口),并尝试用SendKeys粘贴剪贴板中的内容。

  1. 它适用于几乎所有我尝试过的应用程序,除了SSMS之外。
  2. 如果我手动按Ctrl+V键,它会粘贴剪贴板上的内容(通常是文本)。
  3. 我添加了一些代码来显示我使用GetForegroundWindow获得的窗口的标题,它确实给了我正确的SSMS窗口
  4. 令人悲哀的是,偶尔(很少),文本被正确地粘贴在SSMS中,但在第二次之后就不能工作了。
  5. 我从来没有听到MessageBox说SetForegroundWindow失败了。
  6. 如果我将单个SendKey替换为发送" A“、"B”和"C“的3 SendKeys,则B和C是发送的,而不是A。是的,我尝试过使用睡眠方式来编写第一个SendKey,但这并没有改变任何事情。
  7. 我确实尝试了SendKeys.SendWait,但没有得到不同的结果。

这是我关闭弹出窗口时的代码

代码语言:javascript
复制
    this.Close();

    IntPtr handle = GetForegroundWindow();

    if (!handle.Equals(IntPtr.Zero))
    {
        if (SetForegroundWindow(handle))
        {
            //Optionnal just to show the window title
            const int nChars = 256;
            StringBuilder Buff = new StringBuilder(nChars);

            if (GetWindowText(handle, Buff, nChars) > 0)
            {
                MessageBox.Show(Buff.ToString());
            }

            //[SOLUTION] Sending a useless key seems to solve my SSMS problem without affecting the other applications.
            SendKeys.Send("{F14}");

            //Sending Ctrl+V
            SendKeys.Send("^{v}");
        }
        else
        {
            MessageBox.Show("SetForegroundWindow failed");
        }
    }

希望有人能帮忙。提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2013-06-06 02:09:26

请参阅http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.aspx

..。SendKeys类容易受到定时问题的影响,一些开发人员不得不解决这些问题。更新后的实现仍然容易受到定时问题的影响,但速度稍快,可能需要对解决方案进行更改。SendKeys类首先尝试使用前面的实现,如果失败,则使用新的实现。因此,SendKeys类在不同操作系统上的行为可能有所不同。此外,当SendKeys类使用新的实现时,SendWait方法不会等待消息被发送到另一个进程时被处理。..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16950386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档