如何屏蔽WebBrowser的下载对话框 ( 积分: 10 )

  • 主题发起人 主题发起人 huhuc
  • 开始时间 开始时间
你态吝啬了!狗狗
 
我不是吝啬,你看我现在多少分。
 
好像是在Navigate2之前判断一下
 
现在还有一个变通的办法使检测扩展名,但是这样比较麻烦。
比方说有的会重定向。
 
onNewWindow2事件中cancel :=true
 
onNewWindow2事件中cancel :=true
没用啊
 
帮忙顶,没有功劳也有苦劳,请求散分。呵呵。
 
用urldownload 函数多好。
 
http://www.euromind.com/iedelphi/iedownload.htm
 
不是要下载东西,而是让WebBrowser不弹出下载对话框。
 
笨笨,你做个什么都不做的IEDownload替换掉原来的不就是不弹出了?
 
我要用到WebBrowser啊
 
晕,那个东西对所有使用webbrowser的东西都起作用的。包括IE.虽然叫IEDownload.
 
写的比较匆忙,应该满足你了,自己多加些判断就可以了,不过10分也太多了点,我还凌晨帮你写代码呢[:D][:D]

关键是蓝色部分

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw;

type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
procedure WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
begin
Caption := URL;
[blue]if Pos('.rar', URL) >0 then begin // 判断是不是有.rar
if Pos('.rar', Url)= Length(URL) -3 then begin // 判断是不是rar在最后
Cancel := True
end;
end[/blue] else
Cancel := False;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('http://www.2ccc.com/article.asp?articleid=1116');
end;

end.
 
不行啊,比方说有些url是www.xxx.com/download.asp?id=1
也会弹出下载对话筐
 
iedownload的sample编译出错了,我的是D7。
 
另外开一个隐藏的WebBrower,把当前WebBrower需要跳转的东西都在那里过一遍,发现需要下载的就按我的出力,不是就让当前的WebBrower跳转,因为不管如何最终都会出来rar,zip,doc等等这样的后缀的,供参考
 
后退
顶部