Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
3-1232568724
Amid
2009-01-21 23:12
2009.12.27
Orqcle10g + Delphi 6, 7


15-1256543859
Kerk
2009-10-26 10:57
2009.12.27
Заметки посла США в СССР (1937-1938 гг.)


15-1256595468
Германн
2009-10-27 01:17
2009.12.27
Ищу эксперта.


1-1230031610
zulus5
2008-12-23 14:26
2009.12.27
PopurMenu в MDIChild


15-1255535983
SP
2009-10-14 19:59
2009.12.27
Флешки. Как запретить открытие при установке?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский