unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,shellapi, Menus;type TForm1 = class(TForm) Label1: TLabel; PopupMenu1: TPopupMenu; N1: TMenuItem; procedure FormCreate(Sender: TObject); procedure N1Click(Sender: TObject); private { Private declarations } public { Public declarations } procedure WMDrops( var message:tmessage);message WM_DROPFILES; end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject); begin Dragacceptfiles(form1.handle,true);end; procedure TForm1.WMDrops(var message:tmessage); var p:array[0..254] of char; i:word; cmd: string; pCmd: PChar; begin inherited; //form1.Memo1.Clear; {$IFDEF WIN32} i:=DragQueryFile(Message.wParam,$ffffffff,nil,0); {$ELSE} i:=DragQueryFile(Message.wParam,$ffff,nil,0); {$ENDIF} //caption:=inttostr(i); for i:=0 to i-1 do begin DragQueryFile(Message.wParam,i,p,255); //showmessage (p); cmd:= 'regsvr32 '+'"'+p+'"'; pCmd:=pChar(cmd); winexec(pCmd,1); //form1.Memo1.Lines.Add(strpas(p)); end; //memo1.Lines.LoadFromFile(memo1.Lines[0]); end; procedure TForm1.N1Click(Sender: TObject); begin Application.Terminate; end;end.
procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;procedure TForm1.FormCreate(Sender: TObject); begin DragAcceptFiles(Handle, True); end;procedure TForm1.FormDestroy(Sender: TObject); begin DragAcceptFiles(Handle, False); end;procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);//拦截WM_DROPFILES消息 var FName : array[0..255] of Char; FileName : String; begin DragQueryFile(Msg.DROP, 0, FName, SizeOf(FName)); if FileExists(String(FName)) then begin //文件 end else if DirectoryExists(String(FName)) then begin //目录 end; DragFinish(Msg.DROP); end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,shellapi, Menus;type
TForm1 = class(TForm)
Label1: TLabel;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure N1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure WMDrops( var message:tmessage);message WM_DROPFILES; end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
Dragacceptfiles(form1.handle,true);end;
procedure TForm1.WMDrops(var message:tmessage);
var
p:array[0..254] of char;
i:word;
cmd: string;
pCmd: PChar;
begin
inherited;
//form1.Memo1.Clear;
{$IFDEF WIN32}
i:=DragQueryFile(Message.wParam,$ffffffff,nil,0);
{$ELSE}
i:=DragQueryFile(Message.wParam,$ffff,nil,0);
{$ENDIF}
//caption:=inttostr(i);
for i:=0 to i-1 do
begin
DragQueryFile(Message.wParam,i,p,255);
//showmessage (p);
cmd:= 'regsvr32 '+'"'+p+'"';
pCmd:=pChar(cmd);
winexec(pCmd,1);
//form1.Memo1.Lines.Add(strpas(p));
end;
//memo1.Lines.LoadFromFile(memo1.Lines[0]);
end;
procedure TForm1.N1Click(Sender: TObject);
begin
Application.Terminate;
end;end.
begin
DragAcceptFiles(Handle, True);
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
DragAcceptFiles(Handle, False);
end;procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);//拦截WM_DROPFILES消息
var
FName : array[0..255] of Char;
FileName : String;
begin
DragQueryFile(Msg.DROP, 0, FName, SizeOf(FName));
if FileExists(String(FName)) then
begin
//文件
end
else if DirectoryExists(String(FName)) then
begin
//目录
end;
DragFinish(Msg.DROP);
end;