Delphi-Quellcode:
function DropFilesOnWnd(AWnd: HWND; AFiles: String): Boolean; overload;
var LInfo: PDragInfoA;
LRes: Boolean;
LHGlobal: Cardinal;
begin
LRes := False;
if copy(AFiles, length(AFiles), 1) <> #0 then
AFiles := AFiles + #0;
LHGlobal := GlobalAlloc(GMEM_SHARE or GMEM_MOVEABLE or GMEM_ZEROINIT, SizeOf(TDragInfoA) + length(AFiles) + 1);
if LHGlobal <> 0 then
begin
LInfo := GlobalLock(LHGlobal);
if LInfo <> nil then
begin
LInfo.uSize := SizeOf(TDragInfoA);
Move(AFiles[1], PChar(Cardinal(LInfo) + LInfo.uSize)^, length(AFiles));
GlobalUnlock(LHGlobal);
LRes := PostMessage(AWnd, WM_DROPFILES, LHGlobal, 0);
end;
if not(LRes) then
GlobalFree(LHGlobal);
end;
result := LRes;
end;
function DropFilesOnWnd(AWnd: HWnd; AFiles: TStringlist): Boolean; overload;
begin
result := DropFilesOnWnd(AWnd, StringReplace(AFiles.Text, #13#10, #0, [rfReplaceAll]));
end;
Habe den Code benutzt aus dem verlinkten Thread. Er Funktioniert, wenn ich z.B. Wordpad als Ziel nehme. Das Ergebnis ist das gleiche als wenn ich die Datei mit dem Wordpad öffne, es funktioniert also. Falls ich es jedoch an mein Programm sende, passiert gar nichts. Ebenso passiert nichts, wenn ich eine Musik-File an Windows Media Player sende. Liegt das dann an der Drag and Drop Implentierung vom jeweiligen Programm? Was wiederrum bedeuten würde, dass ich solange Drag and Drop Möglichkeiten testen müsste, bis ich die passende zur Implentierung gefunden habe?
Danke für die guten Tipps bis jetzt!