怎样将IE的默认下载屏蔽?做过下载组件的朋友进来看看!!!!!!! (300分)

  • 主题发起人 一剑封喉
  • 开始时间

一剑封喉

Unregistered / Unconfirmed
GUEST, unregistred user!
IE的默认下载比较土,而且无法判断用户是否已经下载完毕,可不可以自己做一个下载
组件将IE的默认下载屏蔽掉,然后用户下载完毕后可以返回给系统标志,请给出详细原码,
用DELPHI做的更好,其他的也可以~!多谢
我的邮箱ld001@fun.21cn.com
 
快给分吧.哈哈.

Internet Explorer 6下载增强插件

V1.00

使用说明

Internet Explorer本身的下载功能是非常弱的,通常我们都愿意使用FlashGet等下载工具下载文件。但是,有的网站的文件下载方式比较特殊,点击下载链接时,FlashGet却没有反应,如果直接将链接拖到FlashGet的下载窗口里,发现最后下载回来的是一个网页L 从这种网站下载文件只好老老实实用IE自己的下载功能了(当然也可以自己分析网页源文件找到下载的真实链接再用FlashGet,不过如果东西多了的话我觉得好累啊),但网速慢的时候IE的下载真是太恶心了……

好在从Internet Explorer 6开始,IE允许用户定义自己的下载接口,这样就可以写一个插件增强IE的下载功能了!只要实现一个IDownloadManager接口,再在HKEY_CURRENT_USER或者HKEY_LOCAL_MACHINE的/Software/Microsoft/Internet Explorer/DownloadUI键值登记一下就行了。有兴趣研究的朋友可以参考MSDN的资料:{Implementing a Custom Download Manager
}

我这里就已经写好了一个现成的IE6插件,它对IE6的下载功能作了一些增强,以方便文件的下载。主要的功能有:

1. 可以将正在下载的文件的URL复制到剪贴板

这样就可以把下载的文件导入到FlashGet等下载工具了,在网速慢的时候尤其有用 J

2. 支持断点续传

如果文件没有下载完,下一次下载的时候只要保存为原来的文件,就可以直接断点续传

3. 更详细的下载进度显示

比原来IE显示的东西要多了一些了 J

安装说明

注意:这个插件只对Internet Explorer 6.0或更高版本有效。



解开下载回来的rar文件,里面应该有3个文件:

DownloadManager.dll

Install.exe

README.doc

运行Install.exe:

点击“安装”,就应该直接安装了。如果安装成功,应该出现以下提示(如果你用的是中文版的操作系统,提示自然是中文的啦):

这样安装就完成了。如果想卸载,运行Install.exe,点击“卸载”就行了。



SPECIAL THANKS TO:

Per Linds?Larsen

{http://www.euromind.com/iedelphi}

本程序是在他的TIEDownload控件及DownloadManager sample的基础上开发的。

--------------------------------------------------------------------------
发信人: Quaful (夸父·逐日), 信区: NewSoftware
标 题: [原创]Internet Explorer 6 下载增强插件
发信站: BBS 水木清华站 (Sun Mar 10 18:50:05 2002)

Internet Explorer本身的下载功能是非常弱的,通常我们都愿意使用FlashGet等
下载工具下载文件。但是,有的网站的文件下载方式比较特殊,点击下载链接时,
FlashGet却没有反应,如果直接将链接拖到FlashGet的下载窗口里,发现最后下载
回来的是一个网页 :(
从这种网站下载文件只好老老实实用IE自己的下载功能了(当
然也可以自己分析网页源文件找到下载的真实链接再用FlashGet,不过如果东西多
了的话我觉得好累啊),但网速慢的时候IE的下载真是太恶心了……

好在从Internet Explorer 6开始,IE允许用户定义自己的下载接口,这样就可以
写一个插件增强IE的下载功能了!只要实现一个IDownloadManager接口,再在
HKEY_CURRENT_USER或者HKEY_LOCAL_MACHINE的
/Software/Microsoft/Internet Explorer/DownloadUI键值登记一下就行了。有兴趣
研究的朋友可以参考MSDN的资料:

Implementing a Custom Download Manager
http://msdn.microsoft.com/workshop/browser/ext/overview/downloadmgr.asp

我这里就已经写好了一个现成的IE6插件,它对IE6的下载功能作了一些增强,以
方便文件的下载。主要的功能有:

1. 可以将正在下载的文件的URL复制到剪贴板
这样就可以把下载的文件导入到FlashGet等下载工具了,在网速慢的时候尤其有用 :)
2. 支持断点续传
如果文件没有下载完,下一次下载的时候只要保存为原来的文件,就可以直接断点
续传
3. 更详细的下载进度显示
比原来IE显示的东西要多了一些 :p
-------------------------------------------------------------------------------
源码已经灌到你的邮箱了.
 
没收到,换个邮箱发发,liudai@21cn.com,多谢!
另外我需要的是在IE5上也能屏蔽掉默认的下载,就是能做到想FLASHGET那样
而且还能得到拥护是否下载完毕。请多多关照!
 
这个要用hook了.资料也很多的.
 
高手求教!
 
Study Good Idea.
 
其实我现在已经能够得到下载文件的地址了,所以现在只需要自己做个组件,用户安装完这个
组件之后直接利用它下载即可,但是我不知道该怎样做才能够做出来,还是请各位帮忙!
 
大侠们,帮帮忙吧
 
其实xwings的文章中提到了实现的方法,实际上关键是实现IDownloadManager接口,该接口
可以接管ie的下载功能,刚好前一段时间写了类似的东西,一下是一些相关的程序,
其中Downloadform是在DownloadForm_U.pas定义的用来取代默认下载窗体的自定义窗体。
载该窗体中使用了IEDownload组件用来完成下载功能该组件可以在iedelphi中找到。

unit _IEDownloadManager;

interface

uses

IEConst, Dialogs, Urlmon, Windows, ActiveX, Classes, ComObj, registry, DownloadForm_U,
SysUtils;




Type

TIEDownloadManagerFactory = class(TComObjectFactory)
private
procedure AddKeys;
procedure RemoveKeys;
public
procedure UpdateRegistry(Register: Boolean)
override;
end;


TIEDownloadManager = class(TComObject, IDownloadManager)
private
DownloadForm: TDownloadForm;
function Download(
pmk: IMoniker
// Identifies the object to be downloaded
pbc: IBindCtx
// Stores information used by the moniker to bind
dwBindVerb: DWORD
// The action to be performed during the bind
grfBINDF: DWORD
// Determines the use of URL encoding during the bind
pBindInfo: PBindInfo
// Used to implement IBindStatusCallback::GetBindInfo
pszHeaders: PWidechar
// Additional headers to use with IHttpNegotiate
pszRedir: PWidechar
// The URL that the moniker is redirected to
uiCP: UINT // The code page of the object's display name
): HRESULT
stdcall;
end;


const
Class_IEDownloadManager: TGUID = '{FEC76531-D69B-448D-840F-AD7865DD9F7B}';

implementation

uses ComServ;

{ TIEDownloadManager }


procedure TIEDownloadManagerFactory.UpdateRegistry(Register: Boolean);
begin
inherited UpdateRegistry(Register);
if Register then AddKeys else RemoveKeys;
end;

procedure TIEDownloadManagerFactory.AddKeys;
var
reg: TRegistry;
S: string;
begin
inherited;
S := GUIDToString(Class_IEDownloadManager);
reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey('Software/Microsoft/Internet Explorer', True) then
begin
Reg.WriteString('DownloadUI', S);
Reg.CloseKey;
end;
finally
Reg.Free;
end;
end;

procedure TIEDownloadManagerFactory.RemoveKeys;
var
reg: TRegistry;
begin
inherited;
reg := TRegistry.Create;
try
reg.RootKey := HKEY_CURRENT_USER;
reg.OpenKey('Software/Microsoft/Internet Explorer', False);
reg.DeleteValue('DownloadUI');
reg.Closekey;
finally
Reg.Free;
end;
end;




{ TIEDownloadManager }

function TIEDownloadManager.Download(pmk: IMoniker
pbc: IBindCtx;
dwBindVerb: DWORD
grfBINDF: DWORD
pBindInfo: PBindInfo
pszHeaders,
pszRedir: PWidechar
uiCP: UINT): HRESULT;
var
Url: PWidechar;
begin
Result := E_ABORT;
try
if DownloadForm = nil then Downloadform := TDownloadform.Create(nil);
Downloadform.show;
pmk.GetDisplayName(pbc, nil, Url);
Downloadform.Download(Url);
//Showmessage(URL);
Result := S_OK;
except
on e:Exception do
begin
end;
end;
//Result := E_ABORT
//popup the default download windows!!
end;

initialization
TIEDownloadManagerFactory.Create(ComServer, TIEDownloadManager, Class_IEDownloadManager,
'IEDownloadManager', 'Download Manager for IE 5.5 and later', ciMultiinstance, tmApartment);

end.

 
好,我去看看
 
awl, 兄,谢谢帮助,不过这个IEDELPHI是什么东西,我怎么能够找到这样的IEDownload
控件,小弟比较愚笨,还请多多帮忙!
 
在下面的网站里你可以找到你要的答案,包括IEDownload空件,及其IDownloadManager接口
的实现方法。
http://www.euromind.com/iedelphi/
 
多谢,如果用这个做桌面程序很方便,但是问题是现在我要在IE中使用,怎么利用这个
组件来封装成一个下载组件,以便能够用ASP直接调用呢?
 
>>一剑封喉
你的意思有点让人糊涂,能够用asp直接调用?asp是在服务器端运行的,难道你的意思
是要实现一个组件安装在服务器上,在服务器端供asp程序调用,而不是客户端喽?
 
ie选项里
安全,自定义选项
里面有个下载禁止
 
:awl兄,我的意思是这样的,我现在有一些资源需要用户来下载,但是我必须要知道用户
是否下载和那些用户下载了这些东西,所以我现在想做个组件,不管是放到服务器端还是
客户端都可以,但是总之都得让我的程序在用户下载完这些东西和下载过程中让我的程序
知道他正在下载,您明白了吗?多谢!
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
927
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
顶部