![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Используя WinAPI, скопировать содержимое строки в буфер обменаDelphi , ОС и Железо , Буфер обменаИспользуя WinAPI, скопировать содержимое строки в буфер обмена
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. Параметры:
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. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Буфер обмена ::
|
|||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |