Почему-то в 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, абракадабра, буфер, кодировка
1 коментарий to “Delphi – абракадабра в буфере обмена (абракадабра clipboard)”
Отсавить коментарий
Рубрики
Облако тегов
Свежие комментарии
- Александр к записи Почему Delphi лучше C++
- aladin к записи Proxifier
- Дмитрий к записи Почему Delphi лучше C++
- Алексей к записи Почему Delphi лучше C++
- buka к записи Vista обречена?
Blogroll
Календарь
Февраль 2012 Пн Вт Ср Чт Пт Сб Вс « Апр 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
вам удалось добиться корректного копирования вставки по нажатию комбинаций клавиш ctrl+c, ctrl+v?
если да то каким образом