本文整理自网络,侵删。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ShellAPI, StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
procedure WMDropFile(var msg: TWMDropFiles); message WM_DROPFILES;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
// register form as the recipient of drop files www.delphitop.com
{ UAC权限 使用这三行
ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_COPYDATA, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_COPYGLOBALDATA , MSGFLT_ADD);
}
DragAcceptFiles(Handle, True);
end;
procedure TForm1.WMDropFile(var msg: TWMDropFiles);
var
FileCount: Cardinal ;
FileName: PChar;
I: Cardinal;
begin
GetMem(FileName, MAX_PATH + 1);
// if index is $FFFFFFFF, return filecount
FileCount := DragQueryFile(msg.Drop, Cardinal(-1), nil, 0);
for I := 0 to FileCount - 1 do begin
DragQueryFile(msg.Drop, I, FileName, MAX_PATH + 1);
ListBox1.Items.Add(FileName);
end;
// release memory of files name buffer
DragFinish(msg.Drop);
msg.Result := 0;
end;
end.
相关阅读 >>
Delphi thread.queue与synchronize的区别
更多相关阅读请进入《Delphi》频道 >>