Буфер обмена может содержать текст в нескольких форматах: анси, юникод, оем. Поэтому можно брать тот, какой нужен - винда сама преобразует текст в нужный формат. А вообще, проверить наличие нужного формата можно с помощью IsClipboardFormatAvailable, можно также перечислить все доступные форматы EnumClipboardFormats (первым идет оригинальный формат, в котором текст был помещен в буфер) PS: в некотрых случаях возможны ошибки преобразования ANSI <=> UNICODE, если текущая установка языка не соотв. языку текста
Спасибо! Вопрос по ходу - нашел ф-цию IsTextUnicode, но хоть убейте, не могу найти в какой она библтотеке.
Жопа, вид спереди... При проверке буфера на форматы CF_TEXT и CF_UNICODETEXT возвращает тру о обоих случаях, а при последующей проверке посредством MessageBoxA, MessageBoxW оказыватся, что в буфере был юникод, но не было аски, и наоборот. блин.
> "в буфере был юникод, но не было аски, и наоборот" Такое возможно только в 9х, а NT-шные винды автоматом преобразуют текстовые форматы CF_TEXT <-> CF_UNICODETEXT. (Точнее сказать - пытаются, вот пример кракозяблов, котрые может выдавать win XP при обмене с прогами, не поддерживающими юникод). Поэтому GetClipboardData(CF_TEXT) всегда должна выдавать текст в ансишной кодировке, а CF_UNICODETEXT соотв-но в юникоде
судя по получаемым результатам - ничего он никому не должен по крайней мере мой 2к например: копирую из блокнота - получаю читаемый через CF_TEXT, CF_UNICODETEXT - возвращает пургу SQL Navigator ведет себя прямо противоположным образом вот такая бяка...
я понял! точнее нашел закономерность... все свои штуки я реализовываю через длл в контексте чужого процесса. если запрашивать буфер из другого процесса, то все ок