Статьи

Копирование в буфер обмена в Delphi

Обычное копирование в буфер обмена командой

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;