Clipboard.GetText() always returns empty string in Mono on Mac

青春壹個敷衍的年華 提交于 2019-11-28 11:59:32

问题


Is there a way to get the clipboard on a Mac in Mono that doesn't return an empty string? This is using the latest NON-beta version of mono.

Clipboard.SetText(String) works fine and I can paste to other programs.

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

All return "" even though Clipboard.ContainsText(TextDataFormat.UnicodeText) returns true.

EDIT:

The solution ended up being to use NSPasteboard on mac. https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSPasteboard_Class/Reference/Reference.html


回答1:


It may be that mono is interpreting TextDataFormat.UnicodeText to mean utf-16 but the 'other application' is placing the text on the clipboard as utf-8.

The following is a patch that, if I remember correctly, fixed an issue similar to this.

clipboard patch

You will need to build mono from and apply the patch to try this out.




回答2:


The solution ended up being to use NSPasteboard on mac. https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSPasteboard_Class/Reference/Reference.html

I could not ever get Clipboard to return anything. Mono has wrappers around NSPasteboard so it ended up being pretty easy this way.



来源:https://stackoverflow.com/questions/17178864/clipboard-gettext-always-returns-empty-string-in-mono-on-mac

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!