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

Simulate keyboard stroke Ctrl+V using C# results "v" in target application

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

我正在使用以下代码:

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

我也试过下面的代码:

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

但问题是它有时会导致粘贴动作,有时只会敲击 v 键。任何人都可以帮助解决我的申请有什么问题吗? 还有一个问题,当其他应用程序想要访问它时访问剪贴板是否有问题?

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

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

根据 docs:

To specify that any combination of SHIFT, CTRL, and ALT should be held down while several other keys are pressed, enclose the code for those keys in parentheses. For example, to specify to hold down SHIFT while E and C are pressed, use "+(EC)". To specify to hold down SHIFT while E is pressed, followed by C without SHIFT, use "+EC".

有时 SendKey 的第一个字符有问题,所以当您发送时: SendKey.Send("^c"); 要么 SendKey.Send("^v"); 您将只有 cv。 所以为了防止这种情况你可以简单地在你的代码之前全部 "space" ,就像这样: SendKey.Send(" ^v"); 并且不要忘记 cv 必须小写。