Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
259 Beiträge
Delphi 11 Alexandria
|
Drag & Drop auf Programm-Icon
31. Mär 2019, 12:52
Moin,
ich habe mal ein bisschen mit Drag&Drop herumgespielt und bekomme mit folgendem Code auch einen Verzeichnispfad aus dem Explorer in eine Listbox:
Delphi-Quellcode:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, ShellAPI;
type
TForm1 = class(TForm)
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
protected
procedure WMDROPFILES( var Msg: TMessage); message WM_DROPFILES;
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const
DF_NUMBEROFFILES = $FFFFFFFF;
procedure TForm1.WMDROPFILES( var Msg: TMessage);
var
i,
anzahl,
size: Integer;
Dateiname: PChar;
begin
inherited;
anzahl := DragQueryFile(Msg.WParam, DF_NUMBEROFFILES, Dateiname, 255);
for i := 0 to (anzahl - 1) do
begin
size := DragQueryFile(Msg.WParam, i, nil, 0) + 1;
Dateiname := StrAlloc(size);
DragQueryFile(Msg.WParam, i, Dateiname, size);
Listbox1.Items.Add(StrPas(Dateiname));
StrDispose(Dateiname);
end;
DragFinish(Msg.WParam);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Form1.Handle, true);
end;
end.
Allerdings klappt das nur wenn das Programm läuft - wenn ich eine Datei auf das Desktop-Icon ziehe wird zwar das Programm gestartet, aber eben nicht der Verzeichnispfad an die Listbox übergeben. Was muss ich denn machen damit das funktioniert ?
Gruß
Hans
|
|
Zitat
|