2

ドラッグ アンド ドロップするファイルを受け入れるフォームと、同じフォームの 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;

前もって感謝します。どんな手がかりも大歓迎です。

4

1 に答える 1

5

TWebBrowser でドラッグ アンド ドロップ操作をインターセプトするには、IDropTargetおよびIDocHostUIHandlerインターフェースを実装する必要があります。次に、GetDropTargetメソッドを使用して独自の IDropTarget 実装を渡す必要があります。

サンプルの Delphi コードについては、この記事を試してくださいHow to handle drag and drop in a TWebBrowser control

于 2012-07-12T15:44:29.513 に答える