JohnK писал(а):1) Переведи что здесь написано (Krϋger — Жақсы сөз!)
2) При копировании и вставке в оболочку VB уже получается "Kr?ger — Æà?ñû ñ?ç!"
JohnK писал(а):1) Переведи что здесь написано (Krϋger — Жақсы сөз!)
JohnK писал(а):2) При копировании и вставке в оболочку VB уже получается "Kr?ger — Æà?ñû ñ?ç!"
Public Sub SetClipboardDataAPI(strText As String)
Dim hMem As Long, lpMem As Long, l As Long
hMem = GlobalAlloc(GMEM_MOVEABLE, LenB(strText) + 2): If hMem = 0 Then Error 7
lpMem = GlobalLock(hMem): If lpMem = 0 Then Error 7
RtlMoveMemory ByVal lpMem, ByVal StrPtr(strText), LenB(strText) + 2
GlobalUnlock hMem
Call OpenClipboard(0&)
Call EmptyClipboard
Call SetClipboardData(CF_UNICODETEXT, hMem)
Call CloseClipboard
End Sub
Private Sub Command1_Click()
e$ = "Kr" + ChrW(&H3CB) + "ger — Жа" + ChrW(&H49B) + "сы с" + ChrW(&H4E9) + "з!"
MessageBoxW 0, StrPtr(e$), 0, 0
SetClipboardDataAPI e$
End Sub
Private Declare Function MessageBoxW Lib "user32" (ByVal h As Long, ByVal g As Long, ByVal j As Long, ByVal n As Long) As Long
Private Declare Sub RtlMoveMemory Lib "kernel32" (dst As Any, src As Any, ByVal amount As Long)
Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function SetClipboardData Lib "user32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Const CF_UNICODETEXT = 13
Private Const GMEM_MOVEABLE = &H2
iGrok писал(а):Т.е. строки, которую никаким способом нельзя сконвертировать в ANSI без искажений.
Так происходит со всеми неюникодными приложениями. VB6 тут не причём.
Сейчас этот форум просматривают: AhrefsBot, Google-бот, Yandex-бот и гости: 67