我正在使用以下代码将文本复制到剪贴板。
System.Windows.Forms.SendKeys.SendWait("^c");
然后我用
Clipboard.GetText()
从剪贴板获取文本。它工作正常,但当我循环使用剪贴板并且我得到的内容应该被下一个复制的文本覆盖时,它看起来像是在延迟。如果我放置 Thread.sleep,它就可以正常工作。如何快速复制并从剪贴板中无延迟地循环获取正确的内容?
这似乎是一个有记录的问题。MSDN http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.aspx承认“计时问题”,但不包括完全解决这些问题的方法,尽管似乎确实有一种“较新”的方法,您需要告诉您的程序默认使用。这是文档的一部分:
SendKeys 类已针对 .NET Framework 3.0 进行了更新。 SendKeys 类容易受到计时问题的影响,一些开发人员必须解决这个问题。更新后的实现仍然容易受到计时问题的影响,但速度稍快一些,并且可能需要更改解决方法。 SendKeys 类首先尝试使用以前的实现,如果失败,则使用新的实现。因此,SendKeys 类在不同操作系统上的行为可能有所不同。此外,当 SendKeys 类使用新实现时,SendWait 方法在将消息发送到另一个进程时不会等待消息被处理。
如果您的应用程序依赖于一致的行为(无论操作系统如何),您可以通过将以下应用程序设置添加到 app.config 文件来强制 SendKeys 类使用新的实现。
<appSettings>
<add key="SendKeys" value="SendInput"/>
</appSettings>
我找到了一个类似(旧)问题 http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/dfb56254-2d12-43c6-8ffa-9a59ba142e8f在另一个公告板上,但不幸的是他们的修复与您的相同 - 在访问剪贴板之前延迟几分之一秒。我找不到该问题的任何其他解决方法。考虑到有一个Send
and a SendWait
,似乎并不太期望后者在发送后真正等待! :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)