Буфер обмена и TMemoryStreamDelphi , ОС и Железо , Буфер обменаБуфер обмена и TMemoryStreamАвтор: http://www.sources.ru Обычно, это нужно для того, чтобы запихнуть в буфер обмена данные собственного формата. Сначала необходимо зарегистрировать этот формат при помощи функции RegisterClipboardFormat(): CF_MYFORMAT := RegisterClipboardFormat('My Format Description'); Затем необходимо проделать следующие шаги:
Пример: var hbuf: THandle; bufptr: Pointer; mstream: TMemoryStream; begin mstream := TMemoryStream.Create; try {-- Записываем данные в mstream. --} hbuf := GlobalAlloc(GMEM_MOVEABLE, mstream.size); try bufptr := GlobalLock(hbuf); try Move(mstream.Memory^, bufptr^, mstream.size); Clipboard.SetAsHandle(CF_MYFORMAT, hbuf); finally GlobalUnlock(hbuf); end; except GlobalFree(hbuf); raise; end; finally mstream.Free; end; end; ВАЖНО: Не удаляйте буфер после GlobalAlloc(). Как только Вы поместите его в буфер обмена, то буфер обмена будет пользоваться им. Для получения данных из потока, можно воспользоваться следующим кодом: var hbuf: THandle; bufptr: Pointer; mstream: TMemoryStream; begin hbuf := Clipboard.GetAsHandle(CF_MYFORMAT); if hbuf <> 0 then begin bufptr := GlobalLock(hbuf); if bufptr <> nil then begin try mstream := TMemoryStream.Create; try mstream.WriteBuffer(bufptr^, GlobalSize(hbuf)); mstream.Position := 0; {-- Читаем данные из mstream. --} finally mstream.Free; end; finally GlobalUnlock(hbuf); end; end; end; end; В статье описывается использование буфера обмена и компонента TMemoryStream для записи и чтения данных в памяти. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Буфер обмена ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |