在Mac的Mono中,Clipboard.GetText()总是返回空字符串

本文关键字:返回 字符串 GetText Mac Mono Clipboard | 更新日期: 2023-09-27 18:19:07

是否有一种方法可以让Mac上的剪贴板在Mono中不返回空字符串?这是使用mono的最新非测试版。

Clipboard.SetText(String)工作正常,我可以粘贴到其他程序。

Clipboard.GetText(TextDataFormat.UnicodeText)
Clipboard.GetText(TextDataFormat.Text)
Clipboard.GetText(TextDataFormat.Rtf)

所有返回",即使Clipboard.ContainsText(TextDataFormat.UnicodeText)返回true。

编辑:

最终的解决方案是在mac上使用NSPasteboard。https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSPasteboard_Class/Reference/Reference.html

在Mac的Mono中,Clipboard.GetText()总是返回空字符串

可能是mono正在解释TextDataFormat。unicotext表示utf-16,但"其他应用程序"将文本放在剪贴板上作为utf-8。

下面是一个补丁,如果我没记错的话,修复了类似的问题。

剪贴板补丁

您将需要构建mono并应用补丁来尝试。

最终的解决方案是在mac上使用NSPasteboard。https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSPasteboard_Class/Reference/Reference.html

我不能让剪贴板返回任何东西。Mono在NSPasteboard周围有包装器,所以这样做很简单。