Обычное копирование в буфер обмена командой
Clipboard.AsText := str;
работает если копируется строка с английскими символами и/или цифрами. Строка из русских букв будет скопирована в неверной кодировке. Вот тут нашел простое решение:
type
TMyClipboard = class(TClipboard);
procedure StrToClipboard(const AStr :string);
var
vLangID :LANGID;
begin
with TMyClipboard(Clipboard) do begin
Open;
try
AsText := AStr;
vLangID := GetUserDefaultLangID;
SetBuffer(CF_LOCALE, vLangID, SizeOf(vLangID));
finally
Close;
end;
end;
end;