Как принимать перетаскиваемые файлы из проводника?

Материал из DRKB

Как принимать перетаскиваемые файлы из проводника?[править | править код]

Вот пример с TListbox на форме:


type 
  TForm1 = class(TForm) 
    ListBox1: TListBox; 
    procedure FormCreate(Sender: TObject); 
  protected 
    procedure WMDROPFILES (var Msg: TMessage); message WM_DROPFILES; 
  private 
  public 
  end; 

var 
  Form1: TForm1; 

implementation 
uses shellapi; 

{$R *.DFM} 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
  DragAcceptFiles(Form1.Handle, true); 
end; 

procedure TForm1.WMDROPFILES (var Msg: TMessage); 
var 
  i, 
  amount, 
  size: integer; 
  Filename: PChar; 
begin 
  inherited; 
  Amount := DragQueryFile(Msg.WParam, $FFFFFFFF, Filename, 255); 
  for i := 0 to (Amount - 1) do 
  begin 
    size := DragQueryFile(Msg.WParam, i , nil, 0) + 1; 
    Filename := StrAlloc(size); 
    DragQueryFile(Msg.WParam,i , Filename, size); 
    listbox1.Items.Add(StrPas(Filename)); 
    StrDispose(Filename); 
  end; 
  DragFinish(Msg.WParam); 
end;


Source: Взято из http://forum.sources.ru
ID: 00654