现在很多软件都在微软的WEB浏览器控件的右键菜单里添加了菜单项并能获取当前网页的相关信息,比如一些下载软件可以下载当前网页里面的链接,著名的有网际快车(Flashget)、影音传送带(Nettransport)等。QQ也是在里面加了大量的菜单项。让我们也来学着为自己的软件添加IE右键菜单项并能取得当前网页的相关信息。
首先添加菜单项是在注册表的下面位置:HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt
在这个注册表项下面添加一个命名项,它的名字就是右键菜单里将出现的名字,然后为其默认值添加一个脚本文件的本地路径。IE就是通过执行这个脚本文件执行你的命令。然后再添加一个contexts的双字节值,它的值根据要求而定,下面是其值与意义的对应:
0x1 << CONTEXT_MENU_DEFAULT) (等于 0x1) //缺省时显示
(0x1 << CONTEXT_MENU_IMAGE) (等于 0x2) //右键点击图像时显示该项
(0x1 << CONTEXT_MENU_CONTROL) (等于 0x4) //右键点击表单元素时显示该项
(0x1 << CONTEXT_MENU_TABLE) (等于 0x8) //右键点击表格时显示该项
(0x1 << CONTEXT_MENU_TEXTSELECT) (等于 0x10) //右键点击高亮选择的文本时显示该项
(0x1 << CONTEXT_MENU_ANCHOR) (等于 0x20) //右键点击链接时显示该项
(0x1 << CONTEXT_MENU_UNKNOWN) (等于 0x40)//右键点击网页中除上以外的地方显示该项
执行命令的脚本可以VBScript,也可以是JavaScript等。现在软件中我看到的大都是VBSCript。像我这种既不懂VBS又不懂JS的人来说,要写出很复杂的脚本是有难度的,但这种脚本能解决问题的,我用VC也可以实现。所以在我的两个相关软件中(BBS文章转载工具和万方学位论文下载工具)都采用了一种简单的方法:使用脚本仅向我的COM接口中传入一个当前网页的Document指针(其Shell接口为IHtmlDocument2),然后通过这个Document指针就可以获得当前网页中你所想要的任意信息。下面是我的脚本的一个例子:
在你的COM接口方法收到Document指针参数后就可以通过MSHTML库获取你想要的信息,比如:
IHtmlDocument2::get_title()可以取得网页标题
IHtmlDocument2::get_URL()可以取得网页的URL
|