我想实现将一应用程序拖入窗体,便可以读它的相关属性(文件名,绝对路径)
 如果是应用程序的快捷方式那就要读它的目标的相关属性;

解决方案 »

  1.   

    有DragDrop,Dragover屬性,直接裡面寫就可以了
      

  2.   

    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.
      

  3.   

    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;