Почему-то в 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;

Связанные статьи: