Registriert seit: 24. Apr 2004
755 Beiträge
Delphi 2010 Professional
|
Drag&drop mehrerer Dateien nach außen
16. Okt 2006, 00:24
Halllo!
Ich möchte aus meinem Programm heraus mehrere Dateien (die sich nicht im selben Ordner befinden) in den Explorer (etc.) droppen.
Hier findet man ein Beispiel, wie man mehrere Dateien eines Ordners droppen kann: http://swiss.torry.net/de/showcode.php?id=2335
Hat jemand einen Tip?
Delphi-Quellcode:
function GetFileListDataObject(files: TStringlist): IDataObject;
type
PArrayOfPItemIDList = ^TArrayOfPItemIDList;
TArrayOfPItemIDList = array[0..0] of PItemIDList;
var
Malloc : IMalloc;
Root : IShellFolder;
Folder : IShellFolder;
FolderPidl : PItemIDList;
p : PArrayOfPItemIDList;
chEaten : ULONG;
dwAttributes : ULONG;
i : Integer;
begin
Result := nil;
if files.Count = 0 then
Exit;
OleCheck(SHGetMalloc(Malloc));
OleCheck(SHGetDesktopFolder(Root));
// Speicher allokieren
p := AllocMem(SizeOf(PItemIDList) * files.Count);
for I := 0 to files.Count - 1 do
begin
OleCheck(Root.ParseDisplayName( 0,
nil,
PWideChar(WideString(ExtractFilePath(files[i]))), // Ordnername
chEaten,
FolderPidl,
dwAttributes));
OleCheck(Root.BindToObject( FolderPidl,
nil,
IShellFolder,
Pointer(Folder)));
OleCheck( folder.ParseDisplayName( 0,
nil,
PWideChar(WideString(ExtractFilename(files[i]))), // Dateiname
chEaten,
p^[i],
dwAttributes));
end;
OleCheck( folder.GetUIObjectOf( 0,
files.count,
p^[0],
IDataObject,
nil,
Pointer(Result)));
for i := 0 to files.Count - 1 do
if p^[i] <> nil then
Malloc.Free(p^[i]);
FreeMem(p);
Malloc.Free(FolderPidl);
end;
|
|
Zitat
|