存档
老文章 — TWebBrowser编程简述
转贴, 原帖在此: http://blog.csdn.net/cathyeagle/archive/2004/09/03/93984.aspx
引 言
这篇文章最先发表于2000年07月25日,最后一次修改是在2001年02月07日。这里再次贴出的目的,一是作为前一阶段的完结,所以文章中的错误都不作修改;二是希望作为一个新的起点。我准备整理一下至今所积累的浏览器编程的知识,比较完整地写出来,与网友共勉。
TWebBrowser编程简述
摘要:Delphi 3开始有了TWebBrowser构件,不过那时是以ActiveX控件的形式出现的,而且需要自己引入,在其后的4.0和5.0中,它就在封装好shdocvw.dll之后作为Internet构件组之一出现在构件面板上了。常常听到有人骂Delphi的帮助做得极差,这次的TWebBrowser又是Microsoft的东东,自然不会好到哪里去,虽说MSDN上什么都有,可是内容太过庞杂,如果没有入口点更是件烦人的事,查找起来给人的感觉大概可以用一句话来形容:非常复杂、复杂非常。
这里有平时我自己用TWebBrowser做程序的一些心得和上网收集到的部分例子和资料,整理了一下,希望能给有兴趣用TWebBrowser编程的朋友带来些帮助。
阅读全文…
MFC 程序员的 WTL 教程 ( 6 ) — 宿纳 ActiveX 控件
Internet Explorer 编程简述(十三)调用IE隐藏的命令(续)
关键字:CGID_ShellDocView
1、概述
在本系列五《调用IE隐藏的命令》中我们曾经从MSDN的一篇文章给出的ShowContextMenu范例入手,深入shdoclc.dll找到了藏于其中的浏览器上下文菜单资源,并以SendMessage发送WM_COMMAND消息到”Internet Explorer_Server”窗口以及其父窗口”Shell DocObject View”的方法完美实现了对“添加到收藏夹”对话框,“导入/导出向导”对话框等的调用,《自定义浏览器上下文菜单》和《完美的“编码”菜单》也运用了同样的技术。
这次,我们还是从 ShowContextMenu 范例入手,再次挖掘 IE 隐藏的命令——CGID_ShellDocView 的命令。
阅读全文…
Internet Explorer 编程简述(十二)正确地设置和转移焦点
关键字:焦点,Focus,加速键,Accelerator,OLEIVERB_UIACTIVATE,IHTMLWindow2,IHTMLDocument4
1、概述
对于99%有UI的Windows应用程序来说,键盘操作都是不可或缺而又容易被人们遗忘的一环。如果对Windows组件作一次逐个的测试,我们会发现Microsoft提供的任何一个Windows组件都通过键盘实现完全的控制(“计算器”比较特殊,它是一个按钮很多且每个按钮都不能获得焦点的程序,但在帮助文档中我们仍然可以找到为每个按钮设置的快捷键),这对于一个专业的Windows应用程序或软件来说非常重要。换句话说,就算没有鼠标用户也不应该束手无策,用户应该可以通过键盘操作完成其希望的功能。焦点的转移无疑是键盘操作的一个重要方面,在浏览器编程中尤其如此。
阅读全文…
Internet Explorer 编程简述(十一)实现完美的Inplace Drag & Drop——“超级拖放”
关键字:超级拖放,GetDropTarget,ondragover,IHTMLDataTransfer
1、概述
许多多窗口浏览器都提供了一种被称为“超级拖放”(或“超级拖拽”、“随心拖放”等等,不一而足)的功能。作为对IE拖拽行为对扩展,“超级拖放”实现了一些非常实用的功能:
- 拖放网页链接:通常是在新窗口中打开
- 拖放选中的文字:保存文字、作为关键字通过搜索引擎搜索网络、作为Url打开等
- 拖放图片:通常是保存图片到指定文件夹
- 当然,还有很关键的一点:拖动对象时鼠标指针反馈不同的拖拽效果
在《Internet Explorer 编程简述(十)响应来自HTML Element的事件通知——几个好用的类》中曾提到,尽管许多浏览器都提供了超级拖放的功能,但与 IE 的缺省实现相比,除了具备鼠标指针拖拽效果外,还没有哪个浏览器的实现能够实现: - 文字在页面内与输入框之间的交互拖放(这一点最为重要)
- 来自外部的文字与网页输入框之间的交互拖放
- 拖拽时滚动页面(这一点是被忽略了)
本文的目的,一是介绍实现超级拖放的两种方法,二是说明如何实现“完美”的拖放——即扩展IE拖拽行为的同时,保留IE默认的拖拽行为。三是给出一个最为直接和简洁的实现,至于拖放不同的对象以实现不同的功能,不在本文讨论的范围,略去。
阅读全文…
Internet Explorer 编程简述(十)响应来自HTML Element的事件通知——几个好用的类
关键字:HTML Element, Sink
1、概述
实现了对 Webbrowser 的 resuing 之后我们便会发现有时候我们还需要处理浏览器中的元素(HTML Element)。这种处理包括主动和被动两个方面,像《FAQ:如何访问WebBrowser的滚动条》、《FAQ:操纵下拉列表》、《FAQ:两种方法访问多层嵌套的frame》等文章所演示的就是主动的处理。通常我们从 Webbrowser 获得一个 Web 文档接口(IHTMLDocumentx),从它出发便可访问到浏览器所包含的一切 HTML 元素。而被动的处理则是在 COM 技术中称为 Sink 的技术,我更喜欢的说法是事件通知。当文档的下载进度发生变化时,我们可以获得 ProgressChange 通知,当 Webbrowser 下载完 HTML 文档时,我们可以获得 DocumentComplete 的通知,而当链接被点击,或图片被拖动时,我们如何获得通知呢?本文希望能够给出部分的答案。
阅读全文…
Internet Explorer 编程简述(九)在自己的浏览器中嵌入Google工具条
关键字:Google Toolbar, Explorer Bars, ToolBands, IObjectWithSite, IDeskBand
1、概述
Internet Explorer强大而方便的可编程能力和可扩展能力为其抢占浏览器市场可谓是立下了汗马功劳。可编程主要体现两方面:
- 实现浏览功能的部分被包装成一个控件——WebBrowser Control,开发人员可以在自己的应用程序中嵌入它从而使程序具有访问Internet上网页的能力,同时WebBrowser Control也能够被灵活地自定义以满足不同的需要。
- 可对Microsoft Internet Explorer应用程序本身嵌入的浏览器控件编程,一般通过BHO(Browser Helper Object)来实现。
Internet Explorer 编程简述(八)实现浏览历史菜单
关键字:ITravelLogStg, IEnumTravelLogEntry, ITravelLogEntry
1、概述
Internet Explorer的浏览历史菜单在4.0版本开始出现,但直到5.5之前,微软都未公布用于访问浏览历史的COM接口,如今已是IE6.0大行其道的年代,用于访问浏览历史的接口也早已公布多时,本文的目的则是试图抛砖引玉,简单介绍用于访问浏览历史的Travel Log接口,并用一个小小的类CIETravelLog来实现对Travel Log的封装。
阅读全文…
Internet Explorer 编程简述(七)完美的“编码”菜单
关键字:编码菜单, Encoding Menu, SHDVID_GETMIMECSETMENU
1、概述
Internet Explorer有实在太多没有公布的东西。上一篇文章《Internet Explorer 编程简述(六)自定义浏览器上下文菜单》提到的获取“编码”菜单的方法就是利用了浏览器的上层窗口“Shell DocObject View”的未公布的命令ID。本文将要介绍的是如何用这个ID把“编码”菜单放到我们自己的菜单中来(如工具条上的“编码”按钮的下拉菜单)。
阅读全文…


近期评论