Delphi使用文件拖放功能


本文整理自网络,侵删。

 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

{ UAC权限 使用这三行

ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD);

ChangeWindowMessageFilter(WM_COPYDATA, MSGFLT_ADD);

ChangeWindowMessageFilter(WM_COPYGLOBALDATA , MSGFLT_ADD);

}

 

   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;

相关阅读 >>

Delphi检测用户是否具有administrator权限

Delphi最简化异步选择tcp服务器

Delphi中用tlistview显示数据库数据

Delphi sqlite incomplete input 错误

Delphi 遍历目录

Delphi try 抛出异常消息

Delphi调用命令行命令并获取返回信息

Delphi Delphi copy,pos,delete win api 版

Delphi得到cpu的序列号

Delphi 打开webbrowser的选中文件路径

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...