接受外部拖动

    技术2022-05-11  1

        最近在经常碰到有人问如何在DELPHI编程的时候,让程序接受外部拖动而来的内容并处理。    就是处理wm_dropfiles消息以及使用DragAcceptFiles、dragqueryfile、dragfinish来操作,这些内容在DELPHI中被封装在shellapi中,编程的时候,要uses这个单元。    在这里用一个例子演示,以后再回答此问题的时候就不用再写了。


     

    unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls,shellapi; // 要使用到shellapi中的内容 type  TForm1  =   class (TForm)    Memo1: TMemo;    Label1: TLabel;    procedure FormCreate(Sender: TObject);   private      // 处理WM_DROPFILES消息     procedure dragdropfile(var msg :  tmessage);message wm_dropfiles;   public      { Public declarations }   end;var  Form1: TForm1;implementation {$R *.dfm} procedure TForm1.dragdropfile(var msg: tmessage);var  char1:array[ 0 .. 128 ] Of  char ;  char2 : pchar;  i,sum :integer;begin   // 获得拖动的数量   sum : =  dragqueryfile(msg.wparam,$FFFFFFFF,nil, 0 );   // 用一个label显示此数量   label1.caption : =  inttostr(sum);  char2 : =  @char1;   for  i : =   0  to sum - 1   do   begin     // 将拖动文件的路径存放到char2并通过一个memo来显示     DragQueryFile(msg.wparam,i,char2, 128 );    memo1.lines.add(char2);end;   dragfinish(msg.wparam); // 结束 end;procedure TForm1.FormCreate(Sender: TObject);begin    // 让程序接受外部拖动    DragAcceptFiles(Handle, true );end;end.


       注:WINXP+D7,转载请注明出处


    最新回复(0)