Обычно, это нужно для того, чтобы запихнуть в буфер обмена данные собственного формата. Сначала необходимо зарегистрировать этот формат при помощи функции RegisterClipboardFormat():
CF_MYFORMAT := RegisterClipboardFormat('My Format Description');
Затем необходимо проделать следующие шаги:
1. Создать поток (stream) и записать в него данные.
2. Создать в памяти глобальный буфер и скопировать в него поток (stream).
3. При помощи Clipboard.SetAsHandle() поместить глобальный буфер в буфер обмена.
Пример:
Code: |
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; |
- Назад
- Вперёд >>
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!