Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.27;
Скачать: CL | DM;

Вниз

Скопировать файл в буфер обмена   Найти похожие ветки 

 
Андрей   (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 вся ветка

Текущий архив: 2009.12.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.098 c
6-1211188398
antonn (work)
2008-05-19 13:13
2009.12.27
Частота посыла пакета (TServerSocket и пт)


1-1231821699
CodeMaster
2009-01-13 07:41
2009.12.27
И снова Drag and Drop


15-1256553697
Урсулапов_
2009-10-26 13:41
2009.12.27
Свисток арбитра в руках болельщика


2-1257440700
-=SV=-
2009-11-05 20:05
2009.12.27
Как сохранять позицию компонетв после закрытия программы


15-1256342365
POOP
2009-10-24 03:59
2009.12.27
Простое проектирование схем