防止TWebBrowser接受删除的文件

时间:2012-07-12 13:26:47

标签: delphi file droppable twebbrowser

我有一个接受要拖放的文件的表单,以及放在同一表单上的TPanel控件上的TWebBrowser控件。

主要的是,当我在表单上删除文件时,它的路径被添加到TEdit控件中。但是,当用户在表单上拖放文件时,有时他们可能会将其放在TWebBrowser上,这样可以根据文件类型为用户保存或运行文件。这就是我实际上不希望发生的事情,我只是想让TWebBrowser忽略删除的文件或者像表单那样处理它。

这是我用来处理WM_DROPFILES消息的代码:

procedure TMainForm.AcceptFiles( var msg : TMessage );
const
  cnMaxFileNameLen = 255;
var
  i,
  nCount     : integer;
  acFileName : array [0..cnMaxFileNameLen] of char;
begin
  // find out how many files we're accepting
  nCount := DragQueryFile( msg.WParam,
                           $FFFFFFFF,
                           acFileName,
                           cnMaxFileNameLen );

  // query Windows one at a time for the file name
  for i := 0 to nCount-1 do
  begin
    DragQueryFile( msg.WParam, i,
                   acFileName, cnMaxFileNameLen );

    // do your thing with the acFileName
    //MessageBox( Handle, acFileName, '', MB_OK );
    Edit1.Text := acFileName;
  end;

  // let Windows know that you're done
  DragFinish( msg.WParam );
end;

提前谢谢你。任何线索都会非常感激。

1 个答案:

答案 0 :(得分:5)

要拦截TWebBrowser中的拖放操作,您必须实现IDropTargetIDocHostUIHandler接口。那么你必须使用GetDropTarget方法传递你自己的IDropTarget实现。

有关示例delphi代码,请尝试使用本文How to handle drag and drop in a TWebBrowser control