我知道要使窗口接收拖动过来的file可以在在 FormCreate中加一句:
DragAcceptFiles(Self.Handle,Enabled);
但是,如果我要接受的是浏览器中托过来的超连接,并且在程序中得到我拖过来的超连接地址,要怎么做呢?

解决方案 »

  1.   

    使用drag&drop好像可以实现,你用google搜一下
      

  2.   

    问题解决了,我总结一下,欢迎讨论,不足之处请指出:(一)一般的拖放文件到自己窗口使用DragAcceptFiles()这个函数,然后捕捉WM_DROPFILES消息就可以将被拖放文件的一些信息取得。例如下面的例子,将拖放文件的文件名拖入Memo1:use shellapi;  ...
      private
        procedure Memo1Message(var Msg: TMsg; var Handled: Boolean);
      ...procedure TForm1.FormCreate(Sender: TObject);
    begin
      DragAcceptFiles(Memo1.Handle, TRUE);
      Application.OnMessage := Memo1Message;
    end;procedure TForm1.Memo1Message(var Msg: TMsg; var Handled: Boolean);
    var
      nFiles, I: Integer;
      Filename: string;
    begin
      if (Msg.message = WM_DROPFILES) and (msg.hwnd = Memo1.Handle) then
      begin
        nFiles := DragQueryFile (Msg.wParam, $FFFFFFFF, nil, 0);
        try
        for I := 0 to nFiles - 1 do
        begin
          SetLength (Filename, 80);
          DragQueryFile (Msg.wParam, I, PChar (Filename), 80);
          Filename := PChar (Filename);
          Memo1.lines.add(filename);
        end;
        finally
          DragFinish (Msg.wParam);
        end;
        Handled := True;
      end;
    end;(二)捕捉IE超连接超级连接和其他文件一些文件属性,通过delphi自带的控件实现是比较困难的,由于delphi封装的控件并没有把有些比较特殊的属性封装进去。
    但我们可以在delphi下使用微软的控件来实现,下面例子是可以将浏览器超级连接地址放入richedit中:菜单:component/import activex control/microsoft rich textbox control...
    然后install在RichTextBox1的OLEDragDrop事件中实现:
    procedure TForm1.RichTextBox1OLEDragDrop(Sender: TObject;
      var Data: IVBDataObject; var Effect: Integer; var Button,
      Shift: Smallint; var x, y: Single);
    begin
    RichTextBox1.Text:=data.GetData(1);
    end;关于如何用delphi封装的控件实现(二),请高手来解答,或者写些ocx吧。
      

  3.   

    有人给我提示说用IDropTarget接口,但是我查了很久的帮助,就是不知道怎么用。有人能帮我吗?