Delphi中实现文件拖放

首先在uses中加入ShellAPI

再在窗体 TForm1.Create事件中加入代码:

DragAcceptFiles(self.Handle,true);//设定接受拖动事件的句柄为本窗口

再在TForm1的Public中写:

Procedure DragFiles(var Msg:TMessage);Message WM_DROPFILES;//响应文件拖动事件

再写上 TForm1.DragFiles过程的代码:

procedure TForm1.DragFiles(var msg:TMessage);
var p:array[0..254] of char;
    i:word;
begin
inherited;
// i:=DragQueryFile(Msg.WParam,$FFFFFFFF,nil,0);//这一句结果i=拖放文件的总个数
// for i:=0 to i-1 do
// begin
   DragQueryFile(Msg.WParam,0,p,255);//将拖放的第i个文件的文件路径拷到P中,这里改i为0,就是只算第一个文件的
   Edit1.Text:=StrPas(p);
//end;
end;