Internet Explorer 编程简述(三)“整理收藏夹”对话框

35、Internet Explorer 8 使用指南:提升上网体验 本文详细介绍了Internet Explorer 8的各项实用功能与操作技巧,涵盖标签浏览设置、收藏夹管理、RSS订阅、Web切片、兼容性视图、加速器使用、打印与缩放、图形动画优化等内容。通过流程图和对比表格直观展示操作逻辑与功能差异,并提供常见问题解答,帮助用户全面提升IE8的上网体验。尽管IE8已逐渐被淘汰,但其功能设计仍具参考价值。 阅读详情

关于Internet Explorer的收藏夹,比较常见的两个问题就是调用“整理收藏夹”对话框和“添加到收藏夹”对话框。调用的方法有多种,但其中还是有些值得讨论的地方。

 

关键字:添加到收藏夹,整理收藏夹,DoAddToFavDlg, DoOrganizeFavDlg

 

 

1、整理收藏夹

 

调用“整理收藏夹”对话框(如下),基本上来说都用的是同一个方法,即调用“shdocvw.dll”中的“DoOrganizeFavDlg”函数,把父窗口句柄和收藏夹路径作为参数传入即可。

 

 

2、代码

 

代码实例如下所示,值得注意的是对“shdocvw.dll”的处理,为避免重复调用,应该先检查其是否已经在内存中。

 

void CMyHtmlView::OnFavOrganizefav()
{
  typedef UINT (CALLBACK* LPFNORGFAV)(HWND, LPTSTR);

  bool bResult = false;

  HMODULE hMod = ::GetModuleHandle( _T("shdocvw.dll") );

  if (hMod == NULL)//如果"shdocvw.dll"尚未载入则载入之
  {
    hMod = ::LoadLibrary( _T("shdocvw.dll") );

    if (hMod == NULL)
    {
      MessageBox( _T("The dynamic link library ShDocVw.DLL cannot be found."),
        _T("Error"), MB_OK | MB_ICONSTOP );
      return;
    }
    LPFNORGFAV lpfnDoOrganizeFavDlg = (LPFNORGFAV)
      ::GetProcAddress( hMod, "DoOrganizeFavDlg" );

    if (lpfnDoOrganizeFavDlg == NULL)
    {
      MessageBox( _T("The entry point DoOrganizeFavDlg cannot be found/n")
        _T("in the dynamic link library ShDocVw.DLL."),
        _T("Error"), MB_OK | MB_ICONSTOP );
      return;
    }

    TCHAR szPath [ MAX_PATH ];
    HRESULT hr;

    hr = ::SHGetSpecialFolderPath( m_hWnd, szPath, CSIDL_FAVORITES, TRUE );
    if (FAILED(hr))
    {
      MessageBox( _T("The path of the Favorites folder cannot be found."),
        _T("Error"), MB_OK | MB_ICONSTOP );
      return;
    }

    bResult = (*lpfnDoOrganizeFavDlg) ( m_hWnd, szPath ) ? true : false;

    ::FreeLibrary( hMod );
  }
  else
//如果"shdocvw.dll"已经在调用者进程的地址空间中则直接使用。
  {
    LPFNORGFAV lpfnDoOrganizeFavDlg = (LPFNORGFAV)
      ::GetProcAddress( hMod, "DoOrganizeFavDlg" );

    if (lpfnDoOrganizeFavDlg == NULL)
    {
      MessageBox( _T("The entry point DoOrganizeFavDlg cannot be found/n")
        _T("in the dynamic link library ShDocVw.DLL."),
        _T("Error"), MB_OK | MB_ICONSTOP );
      return;
    }

    TCHAR szPath [ MAX_PATH ];
    HRESULT hr;

    hr = ::SHGetSpecialFolderPath( m_hWnd, szPath, CSIDL_FAVORITES, TRUE );
    if (FAILED(hr))
    {
      MessageBox( _T("The path of the Favorites folder cannot be found."),
        _T("Error"), MB_OK | MB_ICONSTOP );
      return;
    }

    bResult = (*lpfnDoOrganizeFavDlg) ( m_hWnd, szPath ) ? true : false;
  }

  return;

}


3、讨论

实际上,从“DoOrganizeFavDlg”函数的原型声明我们可以看到,由于需要一个路径,所以“整理收藏夹”对话框其实不仅可以用来整理收藏夹,还可以整理磁盘上的目录。而且所谓的整理也不过是提供了一个对话框使用户用起来比较方便而已,和直接在资源管理器中整理没有实质性的差别。因此调用“整理收藏夹”对话框的方法从IE4.0开始就没有变过,除了对话框的布局有所改变。

 

typedef UINT (CALLBACK* LPFNORGFAV)(HWND, LPTSTR);

 

 

IE 4.0的“整理收藏夹”对话框

 

 

IE 4.0的“整理收藏夹”对话框(原先的设计)

 

 

“添加到收藏夹”就不同了,“DoAddToFavDlg”函数不再像“DoOrganizeFavDlg”函数一样对所有IE的版本都适用。

 

 

参考资料

MSDN: Adding Internet Explorer Favorites to Your Application

 

引用地址Internet Explorer 编程简述(三)“整理收藏夹”对话框

Internet Explorer 7 中文版安装程序 htmltable {th, td {th {pre {简介:IE7-WindowsXP-x86-chs.rar 提供了适用于Windows XP 32位系统的Internet Explorer 7中文版安装文件。该浏览器是IE6的后续版本,引入了多标签浏览、RSS订阅、搜索栏、Aero界面支持、钓鱼过滤、增强安全性和隐私浏览等特性。尽管IE7对现代网络技术的兼容性有限,并已停止支持,但本压缩包仍旧包含了所有必要的安装文件。 阅读详情

相关推荐

收藏夹整理

fi02 2011-02-26 dfeixtay ori [size=large]收藏夹整理[/size] 那些相见恨晚的 JavaScript 技巧 [url]http://www.cnbeta.com/articles/109461.htm[/url] 拿什么拯救我丢失的数据 [url]http://www.cnbeta.com/articles/109861.htm[/...

现在的菜鸟三年后的大牛 241

Internet Explorer 编程简述(四)“添加到收藏夹对话框

关键字:“添加到收藏夹对话框, 模态窗口,IShellUIHelper,DoAddToFavDlg, DoOrganizeFavDlg1、概述调用“添加到收藏夹对话框(如下)与调用“整理收藏夹对话框有不同之处,前者所做的工作比后者要来得复杂。将链接添加到收藏夹除了将链接保存之外,还可能会有脱机访问的设置,从IE 4.0到IE 5.0,处理的方式也发生了一些变化。 2、IShe

eagleboost's blog 1万+

添加收藏夹对话框代码

单击鼠标右键弹出添加收藏夹对话框 if (document.all) document.body.onmousedown=new Function("if (event.button==2||event.button==3){window.external.addFavorite(http://www.cn,添加到收藏夹)}") 点击按钮弹出添加收藏夹对话框 http://www.cn

zhaoyf2006的专栏 672

Internet Explorer 编程简述(一)WebBrowser还是WebBrowser_V1收藏

 Internet Explorer 编程简述(一)WebBrowser还是WebBrowser_V1收藏新一篇: Internet Explorer 编程简述(二)在IE中编辑OLE嵌入文档 | 旧一篇: Internet Explorer 编程简述(序)function StorePage(){d=document;t=d.selection?(d.selection.type

skyremember的专栏 4172

Internet Explorer 编程简述(五)调用IE隐藏的命令(中文版)

关键字:Add To Favorite, Import/Export Wizard, Shell DocObject View, Internet Explorer_Server1、概述除了“整理收藏夹”和“添加到收藏夹对话框外,还有其它一些对话框是我们希望直接通过WebBrowser调用的,比如“导入/导出”对话框,用一般的方法很难调用。IShellUIHelper尽管提供了ImportE

eagleboost's blog 1万+

(转和整理)利用Htc文件挂马

利用htc文件来自动挂马加载iframe    百度百科里对htc文件 的 解释为:从5.5版本开始,Internet ExplorerIE)开始支持Web 行为的概念。这些行为是由后缀名为.htc的脚本文件描述的,它们定义了一套方法和属性,程序员几乎可以把这些方法和属性应用到HTML页面上的任何元素 上去。Web 行为是非常伟大的因为它们允许程序员把自定义的功能“连接”到现有的元素和控件,而不是必须让用户下载二进制文件(例如ActiveX 控件)来完成这个功能。Web 行为还是推荐的扩展

zhangmiaoping23的专栏 881

php 文件下载 ie,PHP:再次强制文件下载和IE

伙计们,我知道有很多关于强制下载对话框弹出的线程,但是没有一个解决方案对我有用.我的应用程序将邮件发送到用户的电子邮件帐户,通知他们“另一个用户向他们发送了一条消息”.这些消息可能包含指向Excel文件的链接.当用户点击其GMail / Yahoo Mail / Outlook中的链接到该Excel文件时,我希望弹出“文件保存”对话框.问题:当我右键单击并在IE上执行“另存为”时,我会看到另存为对...

weixin_36281932的博客 130

【历史上的今天】11 月 22 日:PHP 创始人诞生;2020 年图灵奖得主出生;IE 2.0 发布

透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。

历史上的今天 1万+

[整理] 浏览器差异(收集)

IE会将注释节点实现为元素,所以在IE中调用getElementsByTagName里面会包含注释节点,这个通常是不应该的 getElementById的参数在IE8及较低的版本不区分大小写 IE7及较低的版本中,表单元素中,如果表单A的name属性名用了另一个元素B的ID名并且A在B之前,那么getElementById会选中A IE8及较低的版本,浏览器不支持getElementsByClass

wutingyehe的专栏 694

关于 Delphi 7 强制 WebBrowser 调用最新 IE 问题的整理

声明:其中的代码基本是完全Copy过来的,见这个链接(https://www.cnblogs.com/zhqian/p/6067820.html) 整理代码原因:1)没有使用说明;2)有 if else 的多次嵌套容易眼花;3)有 HTML 换行符与注释混淆,且有窗体的东西嵌在其中,所以并不是在D7中贴上代码就能运行。 代码这里开始: unit Unit2; interface use...

oceanable的博客 783

历史上的今天:“超级计算机之父”诞生;星推出移动支付;LibreOffice 发布...

整理 | 王启隆透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。今天是 2022 年 9 月 28 日,在上千年前的今天,公元前 551 年 9 月 28 日,孔子诞辰。孔子通过对《周易》的解释,提出万物的初始是“太极”,推动万物发展变化的是“阴阳”两仪;古人的哲学蕴藏着奥秘,吸引着我们探索历史,在科技历史中的 9 月 28 日,又有哪些关键事件发生呢?1925 年 9 月 28 日:“...

CSDN资讯 3780

【历史上的今天】9 月 28 日:“超级计算机之父”诞生;星推出移动支付;LibreOffice 发布

透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。

历史上的今天 3617
上一篇: Internet Explorer 编程简述(二)在IE中编辑OLE嵌入文档
下一篇: Internet Explorer 编程简述(四)“添加到收藏夹”对话框
eagleboost
博客等级 码龄27年 67粉丝 56原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值