调出IE保存文件对话框

ysjyniiq 2011-07-07 08:56:50
我的程序里加了一个IE控件,需要用IE控件调出一个保存文件对话框.
例如:现在有链接:http://dl_dir.qq.com/qqfile/qq/QQ2010/QQ2010.exe,我想直接调出IE另存为这个文件的对话框,保存这个链接文件,千万表跟我说用IWebBrowser2的Navigate2这种低俗方法。
...全文
392 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
fyten1985 2011-11-23
  • 打赏
  • 举报
回复
但是我在使用这个函数的时候我出现
“当前安全设置不允许下载。”
的对话框,这是什么问题?有人知道么?

[Quote=引用 29 楼 ysjyniiq 的回复:]

引用 28 楼 ndy_w 的回复:
找了找,webbrowser调用的是DoFileDownload,未公开的函数,在shdocvw.dll里。

C/C++ code

typedef long _stdcall pDoFileDownloadType(LPCWSTR szURL);
HINSTANCE hInstance=LoadLibrary(L"shdocvw.……
[/Quote]
MoXiaoRab 2011-07-09
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 ndy_w 的回复:]
找了找,webbrowser调用的是DoFileDownload,未公开的函数,在shdocvw.dll里。
[/Quote]
学习了
MoXiaoRab 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ysjyniiq 的回复:]
引用 2 楼 tr0j4n 的回复:
C/C++ code
HRESULT ExecWB( OLECMDID cmdID,
OLECMDEXECOPT cmdexecopt,
VARIANT *pvaIn,
VARIANT *pvaOut
);


C/C++ code

typedef enum
{
OLECMDID_OPEN ……

不好意思,你这招是不中的,我已……
[/Quote]
你贴出你使用的代码来
枫桦沐阳 2011-07-08
  • 打赏
  • 举报
回复
IWebBrowser2::ExecWB OLECMDID_SAVEAS很好用啊。为什么不好用。。

ysjyniiq 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fishion 的回复:]
你都说了是自己写的程序了,那你就可以用CFileDialog来进行模拟“另存为”对话框了,得到保存路径后,用CInternetSession ,CHttpFile 进行下载和模拟下载对话框,这个可以参考下少先队的blog
http://blog.csdn.net/wangningyu/article/details/4564818
[/Quote]
也非常抱歉,我不希望这样下,我就要用IE,用户表示这样安全!!
ysjyniiq 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fishion 的回复:]
你都说了是自己写的程序了,那你就可以用CFileDialog来进行模拟“另存为”对话框了,得到保存路径后,用CInternetSession ,CHttpFile 进行下载和模拟下载对话框,这个可以参考下少先队的blog
http://blog.csdn.net/wangningyu/article/details/4564818
[/Quote]
也非常
ysjyniiq 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tr0j4n 的回复:]
C/C++ code
HRESULT ExecWB( OLECMDID cmdID,
OLECMDEXECOPT cmdexecopt,
VARIANT *pvaIn,
VARIANT *pvaOut
);


C/C++ code

typedef enum
{
OLECMDID_OPEN ……
[/Quote]
不好意思,你这招是不中的,我已经试了无数遍的了
fishion 2011-07-08
  • 打赏
  • 举报
回复
你都说了是自己写的程序了,那你就可以用CFileDialog来进行模拟“另存为”对话框了,得到保存路径后,用CInternetSession ,CHttpFile 进行下载和模拟下载对话框,这个可以参考下少先队的blog
http://blog.csdn.net/wangningyu/article/details/4564818
ysjyniiq 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 ndy_w 的回复:]
找了找,webbrowser调用的是DoFileDownload,未公开的函数,在shdocvw.dll里。
[/Quote]

typedef long _stdcall pDoFileDownloadType(LPCWSTR szURL);
HINSTANCE hInstance=LoadLibrary(L"shdocvw.dll");
ATLASSERT(hInstance != NULL);
pDoFileDownloadType * fn=(pDoFileDownloadType *)GetProcAddress(hInstance, "DoFileDownload");
ATLASSERT(fn != NULL);
fn(L"http://118.212.130.217:82/down/PrcView.zip");

牛B,就是我想要的,还不用IE,自动查找cookie,灰常牛X!
ndy_w 2011-07-08
  • 打赏
  • 举报
回复
找了找,webbrowser调用的是DoFileDownload,未公开的函数,在shdocvw.dll里。
MoXiaoRab 2011-07-08
  • 打赏
  • 举报
回复
那不就是有窗口了?你是不会保存文件还是怎的
ysjyniiq 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 tr0j4n 的回复:]

那你有注册下载窗口的UI么?
[/Quote]
注册了
MoXiaoRab 2011-07-08
  • 打赏
  • 举报
回复
那你有注册下载窗口的UI么?
ysjyniiq 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 tr0j4n 的回复:]

引用 20 楼 ysjyniiq 的回复:
引用 18 楼 tr0j4n 的回复:

你究竟是要阻止啊,还是要下载啊。
要阻止就在before里面弄。要下载就在cpmplete里面处理

如果你实在不想navigate,那么只有一种很复杂的方法:IDownloadManager::Download

IDownloadManager::Download,不复杂,我已经实现了,甚至……
[/Quote]
实现DownloadManager与 调用IE的“目标另存为” 关系不大。但也有关系,一般是先出在弹这个框之前IE会调用IDownloadManager的Download,然后。。。。。,这个流程我很熟悉。。。
我现在仅仅有一个需求 如何《调用IE的“目标另存为”》功能
MoXiaoRab 2011-07-08
  • 打赏
  • 举报
回复
注册DownloadUI 了没
MoXiaoRab 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 ysjyniiq 的回复:]
引用 18 楼 tr0j4n 的回复:

你究竟是要阻止啊,还是要下载啊。
要阻止就在before里面弄。要下载就在cpmplete里面处理

如果你实在不想navigate,那么只有一种很复杂的方法:IDownloadManager::Download

IDownloadManager::Download,不复杂,我已经实现了,甚至IBindStatusCallback都实现了
……
[/Quote]
就是说你已经能显示下载窗口了?
ysjyniiq 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 ndy_w 的回复:]

lz的webbrowser看来要显示东西的...有难度
很怀疑那个对话框是IE的,不是webbrowser的
[/Quote]
不用怀疑,那个东西是webbrowser的,我把这个控件放到我的EXE,一样能调出那个下载框
ysjyniiq 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 tr0j4n 的回复:]

你究竟是要阻止啊,还是要下载啊。
要阻止就在before里面弄。要下载就在cpmplete里面处理

如果你实在不想navigate,那么只有一种很复杂的方法:IDownloadManager::Download
[/Quote]
IDownloadManager::Download,不复杂,我已经实现了,甚至IBindStatusCallback都实现了
其实我就想调用IE的“目标另存为”那一功能。
ndy_w 2011-07-08
  • 打赏
  • 举报
回复
lz的webbrowser看来要显示东西的...有难度
很怀疑那个对话框是IE的,不是webbrowser的
MoXiaoRab 2011-07-08
  • 打赏
  • 举报
回复
你究竟是要阻止啊,还是要下载啊。
要阻止就在before里面弄。要下载就在cpmplete里面处理

如果你实在不想navigate,那么只有一种很复杂的方法:IDownloadManager::Download
加载更多回复(11)

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧