Форум: "WinAPI";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];
ВнизСкопировать файл в буфер обмена Найти похожие ветки
← →
Андрей (2008-11-05 11:17) [0]Привет всем!!В общем такая ситуация надо произвольный файл(типа мр3 или ещё что) засунуть в буфер обмена а потом вставить в нужную папку эксплорером. Кто может помочь в реализации???Желательно с комментариями. Спасибо заранее.
← →
Сергей М. © (2008-11-05 11:35) [1]http://delphi-faq.zoxt.net/729.htm
← →
Андрей (2008-11-05 11:39) [2]Спасибо, только нужна помощь чтоб разобрать по строкам что там делается
← →
Сергей М. © (2008-11-05 11:40) [3]Цитируй непонятные строчки и спрашивай что конкретно тебе в каждой из них не понятно
← →
Андрей (2008-11-05 11:43) [4]Желательно всё. Я понял что заданный файл мы загоняем в какую то структуру и потом посредством handle переннаправляем её в буфер
← →
Сергей М. © (2008-11-05 12:02) [5]procedure CopyFilesToClipboard(FileList: string);
var
DropFiles: PDropFiles;
hGlobal: THandle;
iLen: Integer;
begin
//длина строки, содержащей список имен файлов
//разделитель элементов списка - символ #0
//конец списка - два подряд следующих символа #0
iLen := Length(FileList) + 2;
FileList := FileList + #0#0;
//выделение глобально доступного блока памяти размером SizeOf(TDropFiles) + iLen
hGlobal := GlobalAlloc(GMEM_SHARE or GMEM_MOVEABLE or GMEM_ZEROINIT,
SizeOf(TDropFiles) + iLen);
if (hGlobal = 0) then raise Exception.Create("Could not allocate memory.");
begin
//получение вирт.адреса выделенного блока = адреса начала структуры TDropFiles
DropFiles := GlobalLock(hGlobal);
//заполнение структуры:
//указание смещения начала строки с именами файлов отн-но начала структуры
DropFiles^.pFiles := SizeOf(TDropFiles);
//копирование строки с именами файлов по указанному смещению
Move(FileList[1], (PChar(DropFiles) + SizeOf(TDropFiles))^, iLen);
//
//разблокировка выделенной памяти
GlobalUnlock(hGlobal);
//собственно "копирование" в буфер
Clipboard.SetAsHandle(CF_HDROP, hGlobal);
end;
end;
← →
Андрей (2008-11-05 12:08) [6]А ТИП dropfiles что представляет собой?
← →
Сергей М. © (2008-11-05 12:26) [7]Это структура
{ format of CF_HDROP and CF_PRINTERS, in the HDROP case the data that follows
is a double null terinated list of file names, for printers they are printer
friendly names }
PDropFiles = ^TDropFiles;
{$EXTERNALSYM _DROPFILES}
_DROPFILES = record
pFiles: DWORD; { offset of file list }
pt: TPoint; { drop point (client coords) }
fNC: BOOL; { is it on NonClient area }
{ and pt is in screen coords }
fWide: BOOL; { WIDE character switch }
end;
TDropFiles = _DROPFILES;
{$EXTERNALSYM DROPFILES}
DROPFILES = _DROPFILES;
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c