Почему-то в Delphi 2007+ Vista 32 упорно текст скопированный при помощи класса Tclipboard приходит в другие приложения в виде абракадабры. На лицо ошибка кодировки в буфере. Не долго думая, модифицировал решение найденное в сети путем добавления в него Unicode. Код надо немного оптимизировать, не обессудьте.
function SetClipboardText(Wnd: HWND; Value: string): Boolean;
var
hData: HGlobal;
pData: pointer;
Len: integer;
str:widestring;
begin
Result := True;
str:=WideString(Value);
if OpenClipboard(Wnd) then
begin
try
Len := Length(Value) shl 1 + 2;
hData := GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE, Len);
try
pData := GlobalLock(hData);
try
Move(PChar(str)^, pData^, Len);
EmptyClipboard;
SetClipboardData(CF_UNICODEText, hData);
finally
GlobalUnlock(hData);
end;
except
GlobalFree(hData);
raise
end;
finally
CloseClipboard;
end;
end
else
Result := False;
end;
Delphi – абракадабра в буфере обмена (абракадабра clipboard)
Создано Krolm Пятница, Март 20th 2009 under: Delphi, Заметки Метки: clipboard, Delphi, абракадабра, буфер, кодировка
Отсавить коментарий
Рубрики
Облако тегов
Комментарии
-
- Вольф к записи Почему Delphi лучше C++
- Александр к записи Почему Delphi лучше C++
- Павел к записи Борьба с вирусами
- Дмитрий к записи Proxifier
- 1 к записи Борьба с вирусами
Blogroll
Календарь
Сентябрь 2010 Пн Вт Ср Чт Пт Сб Вс « Апр 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