在目标应用程序中使用C#结果“v”模拟键盘敲击Ctrl + V.

时间:2016-07-17 02:36:35

标签: c# copy-paste paste keystroke simulate

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

我使用以下代码:

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

我也试过以下代码:

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

但问题是,它有时会导致粘贴操作,有时只会触发 v 键。任何人都可以帮助我的应用程序出错吗? 另一个问题是,当其他应用想要访问它时访问剪贴板是否存在问题?

2 个答案:

答案 0 :(得分:1)

使用SendKeys.Send时,您需要使用括号来保存多个修改器。但是,由于您只有一个修饰符,因此您不需要进行任何分组,只应发送"^v"

花括号{}用于指定{ENTER}等特殊键,SendKey.Send docs

中提供完整列表

根据docs

  

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

答案 1 :(得分:0)

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