В PureBasic очень упрощена работа с буфером обмена. Всё что мы можем получить это изображение и текст.
Предполагается, что встроенные функции GetClipboardText() и SetClipboardImage(#Image)
сами правильно определят кодировки или там формат изображения. Но системный буфер обмена предлагает более широкие функции.
Работать на уровне API практически так же просто, как и со встроенными функциями.
Пример определения кодировок текста в буфере обмена + в виде теста запись OEM.
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| ; Test текста ; Если файл скомпилирован в режиме юникода и ; формат Utf8, то сработает Case #CF_UNICODETEXT ; если режим обычный текст без поддержки юникода, то Case #CF_TEXT ; text.s = "purebasic кириллица" ; ; SetClipboardText(Text) ; Test OEM ; режим обычный текст без поддержки юникода ; сработает Case #CF_OEMTEXT ; String.s = "purebasic кириллица" ; CharToOem_(@String, @String) ; OpenClipboard_(0) ; EmptyClipboard_() ; SetClipboardData_(#CF_OEMTEXT,@String) ; CloseClipboard_() ; GlobalFree_(@String) ; OpenClipboard_(0) lR = EnumClipboardFormats_(lR) Select lR Case #CF_TEXT Debug "Text" hStrPtr = GetClipboardData_(lR) MessageRequester("ClipBoard Text", PeekS(hStrPtr,-1,#PB_Ascii), 0) Case #CF_BITMAP Debug "Bitmap Picture" Case #CF_METAFILEPICT Debug "Meta-File Picture" Case #CF_SYLK Debug "Microsoft Symbolic Link (SYLK) data." Case #CF_DIF Debug "Software Arts' Data Interchange information." Case #CF_TIFF Debug "Tagged Image File Format (TIFF) Picture" Case #CF_OEMTEXT Debug "Text (OEM)" hStrPtr = GetClipboardData_(lR) String.s = PeekS(hStrPtr,-1,#PB_Ascii) OemToChar_(@String, @String) MessageRequester("ClipBoard Text", String, 0) Case #CF_DIB Debug "DIB Bitmap Picture" Case #CF_PALETTE Debug "Colour Palette" Case #CF_PENDATA Debug "Pen Data" Case #CF_RIFF Debug "RIFF Audio data" Case #CF_WAVE Debug "Wave File" Case #CF_UNICODETEXT Debug "Text (Unicode)" hStrPtr = GetClipboardData_(lR) MessageRequester("ClipBoard Text", PeekS(hStrPtr,-1,#PB_Unicode), 0) Case #CF_ENHMETAFILE Debug "Enhanced Meta-File Picture" Case #CF_HDROP Debug "File List" Case #CF_LOCALE Debug "Text Locale Identifier" Default Debug "Неизвестная кодировка или данные = " + lR hStrPtr = GetClipboardData_(lR) MessageRequester("ClipBoard Text", PeekS(hStrPtr,-1,#PB_Unicode), 0) EndSelect CloseClipboard_() |