如何使用c#模拟CTRL+V键击(粘贴)

本文关键字:粘贴 键击 CTRL+V 何使用 模拟 | 更新日期: 2023-09-27 18:05:39

如何使用c#模拟CTRL+V键(粘贴)?

我有一个没有访问id的文本框,例如textbox1.Text = someValue在这里不起作用。
我想填充文本框(从剪贴板)通过点击它。由于某些原因,我们确实需要simulate CTRL+V,这意味着我们不能使用像inputsimulator这样的外部库。

如何使用c#模拟CTRL+V键击(粘贴)

字符vs键

% =>alt, + =>shift^用于ctrl

原始答:

用另一个键模拟单个修饰符键的说明如下Step1:聚焦文本框,您想要执行两个键,然后Step2:发送键,例如control-v将像"^{v}"一样发送。下面是代码

target_textBox.Focus();
SendKeys.Send("^{v}");
只有当目标文本框在发送密钥 时没有聚焦时,才需要

target_textBox.Focus();

更新:对于发送三个密钥(两个修改密钥加上其他密钥),如实现ctrl shift F1,您将发送以下

^+{F1}

Microsoft Docs Ref

为什么不重写TextBox OnClick事件而不是在事件被调用时,将Text属性设置为Clipboard.GetText()

:

private void textBox1_Click ( object sender, EventArgs e )
{
        textBox1.Text = Clipboard.GetText ();
}

这个函数已经内置在:

textbox1.Paste();

一些JS不允许以常规方式更改值

inputList[21].SetAttribute("value", txtEMail.Text);

你应该尝试这样做:

inputElement.InvokeMember("focus");
inputElement.InvokeMember("click"); //sometimes helpfull
Clipboard.SetDataObject(txtEMail.Text);
SendKeys.Send("^(v)");

//但不包括"^{v}"

如果操作系统中的语言不是英语,则此选项可能不起作用:

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

那么试试这个选项:

SendKeys.Send("+{INSERT}");