如何使用C#模拟CTRL+V键(粘贴)?
我有一个没有id用于访问的文本框,例如textbox1.Text = someValue
在这里无法工作。
我想通过单击它来填充该文本框(从剪贴板)。由于某些原因,我们确切地需要模拟CTRL+V,也就是说我们不能使用外部库,比如inputsimulator。
如何使用C#模拟CTRL+V键(粘贴)?
我有一个没有id用于访问的文本框,例如textbox1.Text = someValue
在这里无法工作。
我想通过单击它来填充该文本框(从剪贴板)。由于某些原因,我们确切地需要模拟CTRL+V,也就是说我们不能使用外部库,比如inputsimulator。
字符与按键
%
=> alt
,+
=> shift
,而^
用于ctrl
键。
原始答案:
下面解释了如何使用另一个键模拟单个修改键的操作。
步骤1:聚焦于您要执行两个键的文本框,然后步骤2:发送键,例如control-v将被发送为"^{v}"
。以下是代码:
target_textBox.Focus();
SendKeys.Send("^{v}");
target_textBox.Focus();
只有在目标文本框没有聚焦的情况下发送按键时才需要使用。
更新:如果要发送三个按键(两个修改键加上其他按键),例如实现 ctrl shift F1
,则需要发送以下内容:
^+{F1}
Microsoft Docs Ref
"+{home}"
"+{end}"
可以起作用。 - Samiprivate void textBox1_Click ( object sender, EventArgs e )
{
textBox1.Text = Clipboard.GetText ();
}
Clipboard.GetText();
但现在它可以与任何事件一起工作(不仅限于点击)。 - Sami如果操作系统的语言不是英语,则此选项可能无法正常工作:
SendKeys.Send("^{v}");
那么尝试这个选项:
SendKeys.Send("+{INSERT}");
有些JS不允许以通常的方式更改值
inputList[21].SetAttribute("value", txtEMail.Text);
你应该尝试类似这样的代码:
inputElement.InvokeMember("focus");
inputElement.InvokeMember("click"); //sometimes helpfull
Clipboard.SetDataObject(txtEMail.Text);
SendKeys.Send("^(v)");
//但不包括“^{v}”