Главная страница
    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.009 c
1-1230592103
ivanoff
2008-12-30 02:08
2009.12.27
Форма MDIChild не разворачвается полностью


2-1252914724
VirEx(home)
2009-09-14 11:52
2009.12.27
сервис + приложение (обмен данными)


2-1257865044
monyk
2009-11-10 17:57
2009.12.27
Время в delphi


15-1256427069
Игорь Шевченко
2009-10-25 02:31
2009.12.27
Вот и кончилось лето...


2-1257871099
vtur
2009-11-10 19:38
2009.12.27
Создание приложений с использованием DLL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский