Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Добавление текста в буфер обмена без использования модуля Clipbrd

Delphi , ОС и Железо , Буфер обмена

Добавление текста в буфер обмена без использования модуля Clipbrd

Автор: Dimka Maslov
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Добавление текста в буфер обмена без использования модуля Clipbrd

Wnd - Handle окна, получающего доступ к буферу обмена,
может быть Application.Handle или Form.Handle
Value - текст, помещаемый в буфер обмена

Зависимости: Windows
Автор:       Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Санкт-Петербург
Copyright:   Dimka Maslov
Дата:        22 августа 2002 г.
***************************************************** }

function SetClipboardText(Wnd: HWND; Value: string): Boolean;
var
  hData: HGlobal;
  pData: pointer;
  Len: integer;
begin
  Result := True;
  if OpenClipboard(Wnd) then
  begin
    try
      Len := Length(Value) + 1;
      hData := GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE, Len);
      try
        pData := GlobalLock(hData);
        try
          Move(PChar(Value)^, pData^, Len);
          EmptyClipboard;
          SetClipboardData(CF_Text, hData);
        finally
          GlobalUnlock(hData);
        end;
      except
        GlobalFree(hData);
        raise
      end;
    finally
      CloseClipboard;
    end;
  end
  else
    Result := False;
end;

Пример использования:

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetClipboardText(Handle, 'qwerty');
end;

Перевод контента на русский язык:

Это фрагмент кода Delphi, демонстрирующий, как установить текст в буфер обмена без использования модуля Clipbrd. Функция SetClipboardText принимает два параметра: Wnd, который является handle окна, владеющего буфером обмена, и Value, который является текстом, который будет скопирован в буфер обмена.

Расшифровка кода:

  1. Функция открывает буфер обмена с помощью функции OpenClipboard, передавая handle окна в качестве аргумента.
  2. Если буфер обмена успешно открыт, функция выделяет память для текста с помощью функции GlobalAlloc и блокирует ее с помощью функции GlobalLock.
  3. Функция копирует текст в выделенную память с помощью функции Move.
  4. Затем функция очищает буфер обмена с помощью функции EmptyClipboard и устанавливает текст как новый контент буфера обмена с помощью функции SetClipboardData, передавая формат типа CF_Text (который указывает, что данные представляют собой простой текст).
  5. Наконец, функция разблокирует память с помощью функции GlobalUnlock и освобождает выделенную память с помощью функции GlobalFree.
  6. Если возникает ошибка при выполнении любого из этих шагов, функция бросает исключение.
  7. Функция также закрывает буфер обмена с помощью функции CloseClipboard, независимо от того, возникла ли ошибка или нет.

Пример использования, предоставленный в этом коде, демонстрирует, как использовать эту функцию в обработчике события клика кнопки формы:

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetClipboardText(Handle, 'qwerty');
end;

В этом примере функция SetClipboardText вызывается с handle текущей формы (Handle) и текстом 'qwerty'. Это устанавливает контент буфера обмена в указанный текст.

Автор этого кода - Димка Маслов, и он был опубликован на его веб-сайте Delphibase. Права на авторство принадлежат ему, а дата публикации - 22 августа 2002 года.

В качестве альтернативного решения можно использовать модуль Clipbrd, как упоминалось ранее, который предоставляет более прямой способ взаимодействия с буфером обмена. Однако этот код демонстрирует, как достичь схожего функционала без использования модуля Clipbrd.

Добавление текста в буфер обмена без использования модуля Clipbrd - функция SetClipboardText, позволяющая помещать текст в буфер обмена с помощью WINAPI и не требующая установки дополнительных модулей.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Буфер обмена ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:00:31/0.0057961940765381/1