Как определить кодировку содержимого буфера обмена - PullRequest
2 голосов
/ 06 апреля 2011

У меня есть стороннее приложение, из которого мне нужно скопировать текст и вставить его в visual studio. Однако, когда я копирую текст типа vysved č enie и вставляю в текстовый редактор Visual Studio, я получаю vysved Е * ение 1016 *.

Бьюсь об заклад, это из-за того, что другая программа помещает в буфер обмена не кодированный в Unicode текст. Поэтому я создал программу для периодической проверки буфера обмена и преобразования текста в Unicode, например:

var originalText = Clipboard.GetText(TextDataFormat.Text);
Clipboard.SetText(originalText, TextDataFormat.UnicodeText);

Это работает нормально, но проблема в том, как мне определить, что у меня уже есть кодированный в Unicode текст в буфере обмена, чтобы я не пытался преобразовать его снова?

Я думал, что Clipboard.ContainsText(TextDataFormat.UnicodeText) сработает, но это всегда возвращало истину.

Ответы [ 2 ]

2 голосов
/ 06 апреля 2011

Использование Clipboard.GetDataObject().

Затем вы можете позвонить GetFormats() на IDataObject возвращено.

0 голосов
/ 06 апреля 2011

Также обратите внимание: примечание из документации MSDN: класс Clipboard может использоваться только в потоках, настроенных на однопотоковый режим (STA).Чтобы использовать этот класс, убедитесь, что ваш метод Main помечен атрибутом STAThreadAttribute.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...