SendInput Ctrl + C然后通过Clipboard.GetText检索复制的内容不起作用

时间:2012-10-23 17:11:47

标签: c# winforms clipboard sendinput

我有一个简单的Windows窗体应用程序,其中包含TextBoxButton。点击Button会将焦点放在TextBox上并模拟按键Ctrl + C,将内容复制到剪贴板中。我正在使用SendInput进行此关键模拟,也尝试了SendKeys.Send("^c")。这适用于复制操作,因为我可以通过将内容粘贴到记事本或其他内容来验证。

然后,我想通过Clipboard.GetText以编程方式检索此复制的值。但是,问题是此方法似乎始终返回剪贴板中的先前值而不是当前值。例如,如果我的TextBox的值序列是:“hello”,“world”,则输出序列为:junk,“hello”。为简单起见,下面是使用SendKeys方法的代码:

... highlight TextBox value...

SendKeys.Send("^c");
Thread.Sleep(100);

Console.WriteLine(Clipboard.GetText());

3 个答案:

答案 0 :(得分:3)

看起来在将文本放入剪贴板之前需要执行消息循环

尝试使用

  Application.DoEvents();

而不是延迟

答案 1 :(得分:1)

 SendKeys.SendWait("^c");
 Clipboard.GetText(TextDataFormat.Text);

答案 2 :(得分:0)

试试这个:

textBox1.Focus();
Clipboard.SetText(textBox1.Text);
textBox2.Text = Clipboard.GetText();