Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Используя WinAPI, скопировать содержимое строки в буфер обмена

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

Используя WinAPI, скопировать содержимое строки в буфер обмена


procedure CopyStringToClipboard(s: string);
var
  hg: THandle;
  P: PChar;
begin
  hg:=GlobalAlloc(GMEM_DDESHARE or GMEM_MOVEABLE, Length(S)+1);
  P:=GlobalLock(hg);
  StrPCopy(P, s);
  GlobalUnlock(hg);
  OpenClipboard(Application.Handle);
  SetClipboardData(CF_TEXT, hg);
  CloseClipboard;
  GlobalFree(hg);
end;

Here's a translation of the provided text into Russian:

Процедура CopyStringToClipboard (s: строка);

Эта процедура называется CopyStringToClipboard и принимает параметр s типа строка.

var hg: THandle; P: ^Char;

Две переменные объявлены. hg - это целочисленное управление памятью, а P - указатель на Char (один символ).

hg:=GlobalAlloc(GMEM_DESHARE or GMEM_MOVEABLE, Length(s)+1);

Эта строка аллокирует память с помощью функции GlobalAlloc. Параметры:

  • GMEM_DESHARE or GMEM_MOVEABLE: Это specifies that the memory is to be shared and moveable.
  • Length(s) + 1: Это specifies the size of the allocation, which is the length of the input string plus one (for the null terminator).

P:=GlobalLock(hg);

Эта строка блокирует аллокированную память с помощью функции GlobalLock. Результат хранится в указателе P.

StrPCopy(P, s);

Эта строка копирует входящую строку в заблокированную память с помощью процедуры StrPCopy.

GlobalUnlock(hg);

Эта строка разблокирует предыдуще заблокированную память с помощью функции GlobalUnlock.

OpenClipboard(Application.Handle);

Эта строка открывает буфер обмена для использования текущим приложением с помощью функции OpenClipboard. Второй параметр - это handle приложения.

SetClipboardData(CF_TEXT, hg);

Эта строка устанавливает данные в буфере обмена в виде текстовой строки с помощью функции SetClipboardData. Второй параметр - это handle памяти, аллокированной ранее.

CloseClipboard;

Эта строка закрывает буфер обмена, который был открыт ранее с помощью функции CloseClipboard.

GlobalFree(hg);

Наконец, эта строка освобождает аллокированную память в начале процедуры с помощью функции GlobalFree.

Альтернативное решение:

procedure CopyStringToClipboard(s: string); begin OpenClipboard(0); SetClipboardText(s); CloseClipboard; end;

Эта версия использует функцию SetClipboardText, которая является более современной и прямой способ копирования строки в буфер обмена. Она также открывает буфер обмена без указания handle окна приложения (что обычно не рекомендуется), но это приемлемо для этого простого примера.

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

Процедура CopyStringToClipboard скопировывает содержимое переданной строки в буфер обмена используя WinAPI.


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


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




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



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


реклама



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

Время компиляции файла: 2024-05-19 17:53:24
2024-05-19 20:49:07/0.0068259239196777/2