delphi - 防止 TWebBrowser 接受删除的文件

标签 delphi file droppable twebbrowser

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

最主要的是,当我将文件拖放到表单上时,其路径会添加到 TEdit 控件中。然而,当用户将文件拖放到表单上时,有时他们实际上可能会将其放到 TWebBrowser 上,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;

提前谢谢您。任何线索将不胜感激。

最佳答案

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

有关示例 Delphi 代码,请尝试这篇文章 How to handle drag and drop in a TWebBrowser control

关于delphi - 防止 TWebBrowser 接受删除的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11452852/

相关文章:

jquery - 将文本拖动到 PaperJS Canvas 上

javascript - jQuery UI 拖放 : Target picks up incorrect droppable area

delphi - 当隐藏一列时,VirtualStringTree 列应调整大小

delphi如何设置tcpserver接收字符串数据

delphi - 如何在客户端连接的 ListView 中存储标识符 - Indy 10

Delphi从TObject继承Create

c - 写入大量信息时 fprintf 出现问题

sql - 存储算法交易设置市场数据的最佳方式是什么?

javascript - 使用JS从客户端PC读取文件而不上传

jquery 未捕获类型错误 : Cannot read property 'options' of undefined (edited)