Einzelnen Beitrag anzeigen

H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
252 Beiträge
 
Delphi 11 Alexandria
 
#1

Drag & Drop auf Programm-Icon

  Alt 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
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat