1. 新建一个Delphi工程,将Form1的FormStyle属性设置为:fsStayOnTop,在窗体上放置一个Memo1控件,用于显示拖放进来的文件名;
2. 添加单元引用: ShellAPI ;
3. 在Public部分声名一个处理WM_DROPFILES消息的过程
public
procedure WmDropFiles( var Msg: TMessage); message WM_DROPFILES;
4. 在Form1的OnCreate事件中添加下面一行
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Form1.Handle, True);
end;
5. 在implementation部分编写WmDropFiles消息处理过程代码
procedure TForm1.WmDropFiles( var Msg: TMessage);
var
P: array [ 0. . 254 ] of Char;
i:Word;
begin
Inherited ;
Memo1.Lines.Clear;
{$IFDEF WIN32}
i:=DragQueryFile(Msg.wParam, $FFFFFFFF , nil , 0 );
{$ELSE}
i:=DragQueryFile(Msg.wParam, $FFFF , nil , 0 );
{$ENDIF}
Caption:=IntToStr(i);
for i:= 0 to i- 1 do
begin
DragQueryFile(Msg.wParam,i,P, 255 );
Memo1.Lines.Add(StrPas(P));
end ;
end ;
2. 添加单元引用: ShellAPI ;
3. 在Public部分声名一个处理WM_DROPFILES消息的过程
public
procedure WmDropFiles( var Msg: TMessage); message WM_DROPFILES;
4. 在Form1的OnCreate事件中添加下面一行
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Form1.Handle, True);
end;
5. 在implementation部分编写WmDropFiles消息处理过程代码
procedure TForm1.WmDropFiles( var Msg: TMessage);
var
P: array [ 0. . 254 ] of Char;
i:Word;
begin
Inherited ;
Memo1.Lines.Clear;
{$IFDEF WIN32}
i:=DragQueryFile(Msg.wParam, $FFFFFFFF , nil , 0 );
{$ELSE}
i:=DragQueryFile(Msg.wParam, $FFFF , nil , 0 );
{$ENDIF}
Caption:=IntToStr(i);
for i:= 0 to i- 1 do
begin
DragQueryFile(Msg.wParam,i,P, 255 );
Memo1.Lines.Add(StrPas(P));
end ;
end ;