【问题标题】:Simulate keyboard stroke Ctrl+V using C# results "v" in target application在目标应用程序中使用 C# 结果“v”模拟键盘敲击 Ctrl+V
【发布时间】:2016-07-17 02:36:35
【问题描述】:

我使用 c# 编写了一个 win 应用程序,它可以自动联系其他应用程序,例如浏览器。我想在我的 win 应用程序中复制一些内容,并将其粘贴到浏览器中,而不需要用户单击或移动鼠标。 我对模拟鼠标点击没有任何问题,但我对模拟键盘敲击有问题。复制 (Ctrl+c) 总是可以正常工作,但是当我想在剪贴板中粘贴任何内容时,有时可以正常工作,有时不能。 以下更多是关于我的问题: 我想使用 C# 来描边 Ctrl+v ,换句话说,我想使用 C# 将剪贴板中的某些内容粘贴到另一个应用程序中。

我正在使用以下代码:

SendKeys.Send("^{v}");

我也尝试了以下代码:

SendKeys.Send("^(v)");

但问题是它有时会导致粘贴动作,有时只是敲击 v 键。谁能帮忙解决我的申请有什么问题? 还有一个问题,当其他应用想要访问剪贴板时,访问剪贴板是否有问题?

【问题讨论】:

    标签: c# copy-paste paste keystroke simulate


    【解决方案1】:

    使用SendKeys.Send 时,您需要使用括号来按住多个修饰符。但是,由于您只有一个修饰符,因此您不需要任何分组,并且应该只发送"^v"

    花括号{} 用于指定特殊键,例如{ENTER},完整列表可在SendKey.Send docs 中找到

    根据docs

    要指定在按下其他几个键的同时按住 SHIFT、CTRL 和 ALT 的任意组合,请将这些键的代码括在括号中。例如,要指定在按下 E 和 C 时按住 SHIFT,请使用“+(EC)”。要指定在按下 E 时按住 SHIFT,然后按 C 而不按 SHIFT,请使用“+EC”。

    【讨论】:

    • 我使用"^(v)" 发送Ctlr+v,但结果和以前一样。即,如果我按这些键 10 次,6 次它可以正常工作,4 次它写“v”
    • 谢谢,我通过编辑问题来描述我的问题
    【解决方案2】:

    有时 SendKey 的第一个字符有问题,所以当你发送时: SendKey.Send("^c"); 或者 SendKey.Send("^v"); 您将只有cv。 所以为了防止这种情况,你可以在你的代码之前简单地使用所有“空格”,如下所示: SendKey.Send(" ^v"); 并且不要忘记cv 必须小写。

    【讨论】:

      猜你喜欢
      • 2015-01-10
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      • 2011-06-04
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      • 2020-07-19
      相关资源
      最近更新 更多