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