Главная страница
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.017 c
2-1257865044
monyk
2009-11-10 17:57
2009.12.27
Время в delphi


1-1229944689
dmitry_12_08_73
2008-12-22 14:18
2009.12.27
Получение ссылки на файл после нажатия в проводнике "Копировать"


1-1230639805
du_hast
2008-12-30 15:23
2009.12.27
Как можно пулчить массив данных Excel chart -а?


15-1256515183
POOP
2009-10-26 02:59
2009.12.27
Программа для рисования линий


2-1257502260
kyn66
2009-11-06 13:11
2009.12.27
Останавливается информация о ходе выполнения процесса