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

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

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

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

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

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

Wnd - Handle окна, получающего доступ к буферу обмена;
Str - строка, в которую будет скопирован текст;

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

function GetClipboardText(Wnd: HWND; var Str: string): Boolean;
var
  hData: HGlobal;
begin
  Result := True;
  if OpenClipboard(Wnd) then
  begin
    try
      hData := GetClipboardData(CF_TEXT);
      if hData <> 0 then
      begin
        try
          SetString(Str, PChar(GlobalLock(hData)), GlobalSize(hData));
        finally
          GlobalUnlock(hData);
        end;
      end
      else
        Result := False;
      Str := PChar(@Str[1]);
    finally
      CloseClipboard;
    end;
  end
  else
    Result := False;
end;

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

function TForm1.Button2Click(Sender: TObject)
var
  Str: string;
begin
  GetClipboardText(Handle, Str);
  ShowMessage(Str);
end;

Классический код Delphi!

Функция GetClipboardText предназначена для извлечения текста из буфера обмена без использования модуля Clipbrd. Это реализация, специфичная для Windows, которая работает на системах, где буфер обмена реализован как глобальный объект памяти.

Вот разбивка кода:

  1. Функция принимает два параметра: Wnd, который является handle окна, которое хочет получить доступ к буферу обмена, и Str, которая является строковой переменной, которая будет хранить извлеченный текст.
  2. Функция возвращает логическое значение, указывающее, была ли операция успешной или нет.
  3. Код использует функцию API OpenClipboard для открытия буфера обмена для чтения. Эта функция принимает handle окна в качестве аргумента.
  4. Если буфер обмена был успешно открыт, код извлекает данные из буфера обмена с помощью функции GetClipboardData. Он указывает формат данных как CF_TEXT, который является форматом, используемым Windows для текстовых данных.
  5. Если извлеченные данные не равны null, код использует функции GlobalLock и GlobalSize для блокировки и извлечения размера глобального объекта памяти, содержащего текстовые данные. Затем он использует функцию SetString для копирования текста в переменную Str.
  6. Код разблокировывает глобальный объект памяти с помощью функции GlobalUnlock.
  7. Если извлеченные данные равны null или возникает ошибка при операции, функция устанавливает значение Result в False.

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

  1. В обработчике события Button2Click формы объявите строковую переменную Str.
  2. Позвользуйте вызвать функцию GetClipboardText, передав handle текущего окна и переменную Str в качестве аргументов.
  3. Если операция была успешной, покажите сообщение с извлеченным текстом с помощью функции ShowMessage.

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

Альтернативное решение: Если вы ищете более современный и кросс-платформенный способ доступа к буферу обмена, вам может понравиться использовать третьестороннюю библиотеку или фреймворк, который предоставляет более полный и платформо-независимый реализацию операций с буфером обмена. Некоторые примеры включают:

  • System.Clipboard в Delphi 2009 и поздних версиях
  • Класс Clipboard в .NET Framework
  • Кросс-платформенные библиотеки, такие как pyperclip для Python или java.awt.datatransfer для Java

Эти альтернативы могут предложить более гибкость, удобство использования и совместимость на различных платформах.

В статье описана функция для получения текста из буфера обмена на языке Delphi без использования модуля Clipbrd.


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-10-24 19:58:49/0.0036489963531494/0