最近在CSDN经常碰到有人问如何在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,转载请注明出处
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。