回答
我用Google搜索這個問題,看看有什麼我會看到,很多人都問這個問題,他們都沒有得到一個堅實的答案...
所以我去了MSDN文檔,發現了一個說明,解釋了大多數問過這個問題的人描述了什麼......當用戶在代碼運行時切換到另一個應用程序時,症狀通常會出現。音符下面引用,以鏈接的文檔以下內容:
All Windows-based applications share the system Clipboard, so the contents are subject to change when you switch to another application.
An object must be serializable for it to be put on the Clipboard. If you pass a non-serializable object to a Clipboard method, the method will fail without throwing an exception. See System.Runtime.Serialization for more information on serialization. If your target application requires a very specific data format, the headers added to the data in the serialization process may prevent the application from recognizing your data. To preserve your data format, add your data as a Byte array to a MemoryStream and pass the MemoryStream to the SetData method.
The Clipboard class can only be used in threads set to single thread apartment (STA) mode. To use this class, ensure that your Main method is marked with the STAThreadAttribute attribute.
Special considerations may be necessary when using the metafile format with the Clipboard. Due to a limitation in the current implementation of the DataObject class, the metafile format used by the .NET Framework may not be recognized by applications that use an older metafile format. In this case, you must interoperate with the Win32 Clipboard application programming interfaces (APIs). For more information, see article 323530, "Metafiles on Clipboard Are Not Visible to All Applications," in the Microsoft Knowledge Base at http://support.microsoft.com .
http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.aspx
有趣的是,這使得一個奇怪的行爲,我在自己的應用程序中的一個注意到的感覺。我有一個應用程序寫入Excel電子表格(實際上,其中數百個,每個修改數百個單元格)。我根本不使用剪貼板,只使用Interop API for excel,但在運行時,每次創建新電子表格時,剪貼板都會清除。就我而言,Excel正在搞亂剪貼板,即使沒有明顯的理由要這樣做。我會把它記錄下來,這是我們凡人永遠不會理解的那些神祕的Windows現象之一。
無論如何,感謝您的問題,我想我理解我的問題,所以+1幫助我。
UltraVNC有沒有機會運行。當該應用程序在客戶端PC的後臺運行時遇到問題。當我關閉VNC時,我可以成功複製到剪貼板。這不是一個令人滿意的解決方案,但至少我知道我的情況是問題的根源。
我有一個錯誤,而試圖:
Clipboard.Clear();
...
Clipboard.SetText(...);
爲了解決它,我從user32.dll
pinvoking一些方法替代Clipboard.Clear()
:
[DllImport("user32.dll")]
static extern IntPtr GetOpenClipboardWindow();
[DllImport("user32.dll")]
private static extern bool OpenClipboard(IntPtr hWndNewOwner);
[DllImport("user32.dll")]
static extern bool EmptyClipboard();
[DllImport("user32.dll", SetLastError=true)]
static extern bool CloseClipboard();
...
IntPtr handleWnd = GetOpenClipboardWindow();
OpenClipboard(handleWnd);
EmptyClipboard();
CloseClipboard();
...
Clipboard.SetText(...);
我使用C#在這裏,但VB版本可能是輕鬆創建它。
- 1. 剪貼板打開失敗
- 2. 剪貼板操作失敗使用Tight VNC
- 3. GetDataObject請求剪貼板操作不成功0x800401D0
- 4. 請求剪貼板操作沒有成功
- 5. Visual Basic剪貼板操作
- 6. 剪貼板的setText失敗而SetDataObject不
- 7. 錯誤 - 打開剪貼板失敗
- 8. Google Apps上的剪貼板操作?
- 9. WPF剪貼板操作期間的數據丟失
- 10. 通過JavaScript進行剪貼板操作
- 11. 複製到剪貼板失敗WPF Datagrid的(CLIPBRD_E_CANT_OPEN)
- 12. 的Android的WebView剪貼板消失
- 13. 如何使用剪貼板操作複製/剪切/粘貼(ctrl-c/ctrl-v)
- 14. Gui剪貼板不工作
- 15. 剪貼板在工作嗎?
- 16. 請求的操作失敗 - Apache的錯誤
- 17. 對象請求失敗:底層的HTTP請求操作失敗,出現錯誤:錯誤域= NSURLErrorDomain代碼= -1012「
- 18. 「RA層請求失敗:REPORT請求失敗」中的git - svn的
- 19. Allegro5 - openGL:失敗請求的主要操作碼:55(X_CreateGC)
- 20. 失敗請求的主要操作碼:1(X_CreateWindow) - Ubuntu
- 21. TortoiseProc啓動失敗錯誤:請求的操作需要提升
- 22. .NET:將剪貼板圖像保存到PNG失敗
- 23. Hwid剪貼板
- 24. Powershell 5剪貼板 - 手動粘貼「複雜」剪貼板內容不起作用
- 25. Ajax請求失敗
- 26. SVN:PROPFIND請求失敗
- 27. Ajax請求失敗
- 28. 請求失敗「JSON」
- 29. HTTP請求失敗,
- 30. 請求失敗(401)
你使用什麼代碼? – 2010-08-05 03:48:42
如果有更多詳細信息,這將是一個更好的問題。 – David 2010-08-05 04:00:32
你想要做什麼剪貼板操作?你正在複製,粘貼,清除,監控等?用戶發起還是自動?幫我幫助你。改善你的問題,我會upvote它,並試圖幫助你。 – 2010-08-08 16:00:11