如果您有一個窗口但無法訪問事件循環,並且只能對X進行函數調用,是否可以實現文本的複製粘貼?我在Windows和OSX上僅使用API函數調用實現了剪貼板。在* nix和X上可能是一樣的嗎?我被告知絕對需要訪問X事件循環。有沒有辦法實現基本的字符串剪貼板功能只有API調用?在X(* nix)上實現剪貼板功能而無需訪問事件循環?
0
A
回答
3
簡答題是「否」。
朗回答以下...
Windows和X剪貼板(不知道OSX)之間的主要區別在於:
- 在Windows中的數據被複制到了一大塊共享內存,當用戶進行復制時,它可用於任何執行粘貼的應用程序。
- 在X,當一個應用程序拷貝它只是擁有剪貼板。然後,當另一個應用程序(或相同)執行PASTE時,數據將從一個應用程序傳輸到另一個應用程序。
因此,爲了實現在X客戶端複製,你必須自己剪貼板,然後再聽取和回覆獲取剪貼板內容消息。並且要實現PASTE,您必須發送獲取剪貼板內容消息並等待答覆。這兩個操作都需要你處理事件循環。
這就是爲什麼在X殺死源應用程序後複製的數據不可用。除非您使用某種剪貼板服務器,即偵聽事件的應用程序剪貼板的所有者正在死亡並保存未來粘貼數據的副本。
爲了公平起見,Windows剪貼板也可以工作在直接傳送模式,但它很少被使用,據我所知,只有對數據的非常大的部分。
+1
Mac OS X使用類似於Windows的模型 - 當您複製數據時,它將被髮送到粘貼板服務器進程(由於某種原因,OS X稱它爲* pasteboard而不是剪貼板),並且當您粘貼數據時,它形成了粘貼板服務器。因此,您可以使用無GUI的程序來執行有用的操作,例如將數據複製到剪貼板或從剪貼板粘貼數據。 –
相關問題
- 1. 在給定XWindow *的情況下在X(* nix)上實現剪貼板功能?
- 2. 剪貼板訪問
- 3. Javascript剪貼板功能
- 4. 訪問Windows剪貼板
- 5. FabricJS剪貼板實現(複製/粘貼)
- 6. 如何訪問剪貼板數據以實現自動化?
- 7. 如何在JavaFX中實現剪貼板
- 8. 在Silverlight中訪問剪貼板
- 9. 將功能添加到剪貼板ActionBar
- 10. 通過Javascript功能循環訪問
- 11. Vim:通過ssh訪問系統剪貼板 - Linux到OS X
- 12. 如何從AppleScript訪問剪貼板?
- 13. 訪問遠程桌面剪貼板
- 14. VBA宏 - 如何訪問剪貼板?
- 15. 奇詭與剪貼板訪問
- 16. CFFI和win32剪貼板訪問
- 17. 如何在Explorer和TcxShellListView之間實現無縫剪貼板?
- 18. 使用IStream接口訪問剪貼板
- 19. 如何實現剪切,複製和粘貼功能在Javascript
- 20. R:在Mac/OSX上覆制到剪貼板的功能?
- 21. 電子郵件模板中的剪貼板功能
- 22. 試圖設置剪貼板文本時,「不允許剪貼板訪問」
- 23. 如何實現循環功能?
- 24. 懸停零剪貼板事件?
- 25. 如何收聽剪貼板事件?
- 26. 無法在PHP循環中實現此次Ago功能
- 27. 從剪貼板發送電子郵件,而無需打開mail.app - 與條件
- 28. 訪問從剪貼板文本文件在Excel中使用VBA
- 29. Python:無需剪貼板,從Office/Excel文檔訪問嵌入式OLE
- 30. 如何使用jquery在剪貼板上觸發keyup事件?
* nix與X是一個非常模糊的要求。很多不同的和不兼容的東西都符合這個要求。 * nix非常多樣化。 –