![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с кириллицей и буфером обмена [D7, WinXP]
fylhtq © (2004-07-30 13:48:00)Не подскажете, уважаемые, как обойти данную проблему:
При копировании в буфер обмена Clipboard.asText кириллического текста - вставляется абракадабра.
fylhtq (2004-07-30 16:14:00) [1]2clickmaker
Агромнейший спасибо!
clickmaker (2004-07-30 15:49:00) [2]попробуй так
procedure SetClipboardText(const S: string);
var
wsz: PWideChar;
dwSize: Cardinal;
hData: Cardinal;
begin
if (Win32Platform = VER_PLATFORM_WIN32_NT) then begin
dwSize := (Length(S)+1) * SizeOf(WideChar);
hData := GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE, dwSize);
wsz := PWideChar(GlobalLock(hData));
StringToWideChar(S, wsz, Length(S)+1);
GlobalUnlock(hData);
Clipboard.SetAsHandle(CF_UNICODETEXT, hData);
end else
Clipboard.AsText := S;
end;
GrayFace (2004-07-30 15:25:00) [3]В XP - тоже.
Sancho (2004-07-30 14:24:00) [4]
Var
ALayout: HKL
........
PostMessage(Application.MainForm.Handle,
WM_INPUTLANGCHANGEREQUEST, 0, ALayout);
ALayout принимает значения: Английская_раскладка = $4090409; Русская_раскладка = $4190419. В винде (2K и, наверное, XP) есть такой косяк: при копировании в буфер обмена русского текста копируются крякозяблики (когда включена английская раскладка), меняешь раскладку и все нормально
fylhtq (2004-07-30 14:12:00) [5]В частности в Блокнот
clickmaker (2004-07-30 14:10:00) [6]
> fylhtq © (30.07.04 13:48)
Куда вставляется?
fylhtq (2004-07-30 14:06:00) [7]Ух... А можно на пальцах, ежели не трудно?
Sancho (2004-07-30 14:01:00) [8]Попробуй перед копированием текста в буфер поменять раскладку клавиатуры (надо послать главному окну приложения сообщение WM_INPUTLANGCHANGEREQUEST).