我有一个问题,我只在网上看到过两三个关于它的帖子:当我在 C# 应用程序(Clipboard.SetText 或 Clipboard.Clear)中使用剪贴板时,Chrome 已经随机使用它,所以我的剪贴板请求失败。
System.Runtime.InteropServices.ExternalException: Requested Clipboard operation did not succeed.
at System.Windows.Forms.Clipboard.ThrowIfFailed(Int32 hr)
at System.Windows.Forms.Clipboard.SetDataObject(Object data, Boolean copy, Int32 retryTimes, Int32 retryDelay)
at System.Windows.Forms.Clipboard.SetText(String text, TextDataFormat format)
at System.Windows.Forms.Clipboard.SetText(String text)
我关闭 Chrome,它可以工作,然后重新打开 Chrome,几分钟后,它仍然失败。我正在使用以下代码和 1 秒计时器和 GetOpenClipboardWindow(),另一个 PInvoke :(,以确认这确实是让我烦恼的 Chrome:
[DllImport("user32.dll")]
static extern IntPtr GetOpenClipboardWindow();
[DllImport("user32.dll", SetLastError = true)]
static extern int GetWindowThreadProcessId(IntPtr hWnd, out int
lpdwProcessId);
IntPtr hwnd = GetOpenClipboardWindow();
if (hwnd != IntPtr.Zero)
{
int processId;
GetWindowThreadProcessId(hwnd, out processId);
Process p = Process.GetProcessById(processId);
listBox1.Items.Add(p.Modules[0].FileName);
}
你们中是否有人已经遇到过这个问题?你知道为什么 Chrome 会偷剪贴板吗?
[编辑]
Chrome 团队的任何成员:亲爱的开发者,如果你今天读到这篇文章,请将我的剪贴板还给我,因为我在剪贴板上拥有比你更多的权利。为了你,我找了两天。