Clipboard.GetText() always returns empty string in

2019-01-29 10:04发布

问题:

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.



标签: c# mono monomac