怎样得知IE下载对话框中文件的地址(200分)

  • 主题发起人 主题发起人 wuwo
  • 开始时间 开始时间
W

wuwo

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠,IE下载一个文件时会弹出一个对话框,
我怎样才能得知对话框中下载文件的地址?
 
对此问题我也想过,不过某有解决。我后来的办法是用opera,那所有的地址都一目
了然了。
 
点鼠标右键,选属性菜单项
 
如果是一般的软件下载的话,直接在连接上面按右键--》查看属性就行了。但
我想你的意思是在某些网站上下载东西的时候,网站是采用CGI或ASP处理的。
这样就没办法看到原始URL,我也常常遇到这种情况。。只是还没想到怎么解决。
各位大伙有知道的么?
 
用DELPHI写一个下载程序,察看她的地质转向就行了!

就想 NetAnts
 
用bho,监视ondownloadbegin事件,记下url,因为除了下载文件有download能激活事件
以外,其他下载网页内容也会激活该事件。所以再查找 正在下载文件的窗口,有这个窗
口出现说明是在下载文件。

不过,这也只是我的想法,还未实现。:-(
 
难道没人知道怎样编程实现吗???????????????????
 
IE的我不知道怎么得到,Webbrowser的我知道。
 
附加功能 将问题提前
 
这下好了。
IE5.5增加了OnFileDownload事件。
 
wuwo:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。
 
介绍一个软件 Naviscope
加强浏览器功能,经它可以见到网页下载的过程信息,
在搜寻引擎查资料时可以先预读入下一页所查到的结果,
还可以滤掉广告图,

到华军上找找看
 
这可是embeddedwb自带的demo中的代码,试试看有没有可能吧
unit intercept;

(* 检测用户是否保存了页面,如果不保存则不能编辑

Last Modified : 1-8-2000
Author : Michael Cessna <mcessna@saleslogix.com>
Purpose : This unit is used to subclass the Internet Explorer 5.x Save
Web Page dialog, so that it can be determined if the user
selected Save or Cancel. If the user selected Save, the
entire path+filename is calculated and the file is opened for
editing (the code for opening the file is in the
EditWebBrowserDoc() procedure of the main unit).

*)

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, CommDlg;

type
TFormIntercept = class(TForm)
Timer: TTimer;
procedure TimerTimer(Sender: TObject);
private
{ Private declarations }
OldWndProc: Pointer;
NewWndProc: Pointer;
DialogHWnd: HWND;
public
{ Public declarations }
protected
{ Protected }
procedure NewWndMethod(var Msg: TMessage);
end;

var
FormIntercept: TFormIntercept;
SavedFileName: string;
WasSaved: Boolean;

implementation

{$R *.DFM}

procedure TFormIntercept.NewWndMethod(var Msg: TMessage);
function ParseExtension(const S: string): string;
var
P: Integer;
begin

Result := '';

P := Pos('.TXT', UpperCase(S));
if P > 0 then
begin
Result := '.txt';
Exit;
end;

P := Pos('.HTM', UpperCase(S));
if P > 0 then
begin
Result := '.htm';
Exit;
end;

P := Pos('.MHT', UpperCase(S));
if P > 0 then
begin
Result := '.mht';
end;

end;
var
Path: array[0..MAX_PATH] of WideChar;
ExtBuff: array[0..34] of char;
Extension: string;
RetVal: Integer;
begin

Msg.Result := 0;

case Msg.Msg of

WM_COMMAND:
begin

case Msg.wParam of

1: { The Save button was clicked }
begin

WasSaved := True;

RetVal := SendMessage(DialogHWnd,
CDM_GETFILEPATH,
SizeOf(Path),
Integer(@Path)
);

if RetVal >= 0 then
begin

if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
{ Handle the UNICODE string on NT }
SavedFileName := PWideChar(Pointer(@Path));
end
else
begin
SavedFileName := PChar(Pointer(@Path));
end;

if ExtractFileExt(SavedFileName) = '' then
begin
GetDlgItemText(DialogHWnd, 1136, ExtBuff, SizeOf(ExtBuff));
Extension := ParseExtension(StrPas(@ExtBuff));
SavedFileName := SavedFileName + Extension;
end;

end;

end;

2: { Dialog was canceled (via either 'Cancel', 'X', or ALT+F4) }
begin
WasSaved := False;
end;

end;

end;

WM_DESTROY:
begin

if Assigned(NewWndProc) then
begin
FreeObjectInstance(NewWndProc);
SetWindowLong(DialogHWnd,
GWL_WNDPROC,
Longint(OldWndProc)
);
end;

end;

end;

Msg.Result := CallWindowProc(OldWndProc,
DialogHWnd,
Msg.Msg,
Msg.WParam,
Msg.LParam
);

end;

procedure TFormIntercept.TimerTimer(Sender: TObject);
begin
DialogHWnd := FindWindow('#32770', '保存 Web 页');
if DialogHWnd > 0 then
begin
if (GetParent(DialogHWnd) = Application.MainForm.Handle) and IsWindow(DialogHWnd) then
begin
Timer.Enabled := False;
SavedFileName := '';
WasSaved := False;
NewWndProc := MakeObjectInstance(NewWndMethod);
OldWndProc := Pointer(SetWindowLong(DialogHWnd,
GWL_WNDPROC,
Longint(NewWndProc))
);
end;
end;
end;

end.
 
看看flashget这些是怎么做的就知道了!
 
to honghs:
你所说的是“保存页面”,我要的是“下载文件”
另 DialogHWnd := FindWindow('#32770', '保存 Web 页')对下载文件对话框没用,
因窗口名称随时在变.我用另种方法得到窗口句柄并向窗口发送CDM_GETFILEPATH消息
但得到的是空字串,WHY? 还有其它方法吗?
to Chenlili:
flashget是什么?能详细点吗?
to All: 谢谢



 
那就用spy++来跟踪一下嘛,findwindow('窗口类名',nil)
 
提问者:
如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
请认真阅读大富翁论坛规则说明

http://www.delphibbs.com/delphibbs/rules.htm
 
后退
顶部