如何对webbrowser和IE编程(三)

c++内嵌IWebBrowser2功能整理 目的:加深对IWebBrowser2的理解,整理。方便以后学习和使用。也方便需要这反面的朋友少点弯路。 声明:有些知识点是本人在使用和学习中借助网络搜索到的,所有难免会有雷同,我会尽量标注原著的出处,当然也可能找不到原著的出去了,如果牵扯到版权或者其他的可以通知我,我会跟你一同处理。本文的源码也有部分是来自网络和msdn上面,出处我也会尽量标明。 前言:前段时间,一个大学同学问我,在win下面 阅读详情

如何对webbrowser和IE编程(三)

IWebBrowserApp

IWebBrowserApp 接口仅仅在IE中实现。 典型的,你使用InternetExplorer 对象创建一个IE的实例. 然后你使用 IWebBrowserApp 接口操纵此实例. (今天采用IWebBrowser2 替代) IWebBrowserApp 接口继承自 IWebBrowser, 所以它提供 IWebBrowser 的全部功能。

因为IWebBrowserApp呈现一个IE窗口的实例, 所以它的方法和属性典型地允许你控制浏览器窗口的用户接口。 这些方法和属性并非包含在WebBrowser的 IWebBrowser 中的:寄宿control的应用程序提供诸如状态条, 工具条, 以及菜单条等用户接口. WebBrowser 控件仅仅用于装载web页以及其它类型文件。

IWebBrowserApp 有4个方法和10 各属性。

方法 IWebBrowserApp 接口的属性很直观立如下表, 但是有2个有理由值的讨论:GetProperty 和 PutProperty. 此两个方法允许你在IE属性包(property bag)中存储一个属性一边你能够在其后重新找回他们。 你将典型地从一个web页上存储一些状态信息到另一个web页 (事实上,使用IWebBrowser2 接口你可以在宿主一个WebBrowser 控件时候使用此方法)

Table 6-3. IWebBrowserApp  vtable 次序的方法

方法

 

 

描述

 

 

Quit

 

 

促使 Internet Explorer 窗口关闭。换句话讲,将自动化操作关闭IE实例

 

 

ClientToWindow

 

 

转换一个点从窗口坐标到客户坐标。

 

 

PutProperty

 

 

存储一个属性值到ie的属性包,将可以随手采用GetProperty.获取

 

 

GetProperty

 

 

获取先前由 PutProperty.方法存储的属性值

 

 

VB代码:

InternetExplorer1.PutProperty "CurrentPicture", 10
InternetExplorer1.GetProperty("CurrentPicture")

VC++代码:

CSomeClass::PutGetProperty(VARIANT vtCurrentValue, VARIANT* vtNewValue)
{
   HRESULT hr;
   hr = m_pInternetExplorer->PutProperty(L"CurrentPicture",
                               vtCurrentValue);
 

 

   if (SUCCEEDED(hr))
   {
     // Notice that vtNewValue is already a pointer, so you
     // don't have to pass the address to GetProperty.
     //
     hr = m_pInternetExplorer->GetProperty(L"CurrentPicture", 
                                 vtNewValue);
   }
 

 

   return hr;
}

PutGetProperty 方法接受包含当前属性值的 VARIANT 变量指针且将接收属性值。

属性 IWebBrowserApp 接口有10 个属性. Table 6-4. IWebBrowserApp vtable 次序的属性

属性

 

 

描述

 

 

Name

 

 

返回对象的名称t. (举例,当自动化IE, Name 属性将返回 Microsoft Internet Explorer.)

 

 

HWND

 

 

返回IE窗口的句柄

 

 

FullName

 

 

返回ie可执行文件的全路径 (iexplore.exe).

 

 

Path

 

 

返回IE应用程序的全路径.

 

 

Visible

 

 

监测和设置IE窗口是否可见。 (换句话讲,你可与使用此属性显示/隐藏)

 

 

StatusBar

 

 

显示或者隐藏IE状态条,也可监测当前状态条

 

 

StatusText

 

 

设置或隐藏状态条文字

 

 

ToolBar

 

 

显示或者隐藏IE工具条,也可监测当前工具条状态 

 

 

MenuBar

 

 

显示或者隐藏IE菜单条,也可监测当前工具菜单态 

 

 

FullScreen

 

 

设置或者检测一个值指示IE当前是否最大化显示。最大化显示,iE占据整个屏幕

 

 

Table 6-4 中的属性列表直截了当且易于使用。举例来说, 如果你想从你的Vb程序中获取IE状态条中的文字,你应当使用如下代码:

Dim strStatusText
strStatusText = InternetExplorer1.StatusText

使用MFC包装类的VC++程序代码如下:

BSTR bstrStatusText;
HRESULT hr = m_pInternetExplorer->get_StatusText(&bstrStatusText);

 

 

 

 

IWebBrowser2

因为COM规则要求接口恒久不变, 要加入新的工呢高COM,你必须增加新的接口。 新的接口可扩展自其他接口已扩展功能。 举例,当心的需求引入WebBrowser 和Internet Explorer 接口, 开发者被要求建立一个新的接口: IWebBrowser2.

早期, IWebBrowser2 继承自 IWebBrowser 和 IWebBrowserApp, 还提供不包含在着两个接口中的功能. 所以你应当使用 IWebBrowser2 接口替代 来操纵WebBrowser 控件或者 Internet Explorer.

IWebBrowser2 接口有4个方法和8个属性.

方法   IWebBrowser2 接口方法如下描述,按照 vtable 次序, in Table 6-5.

也许IWebBrowser2 、接口踵使用最多的方法是ExecWB. 它通过WebBrowser实现了一个  IOleCommandTarget 接口的Exec的包装实现。 在 ExecWB 方法 被创建前, 你不可以直接从VB中调用IOleCommandTarget::Exec, 因为VB不可访问 IOleCommandTarget 接口 ,因而VB不可直接使用该接口的ExecWB方法。 IOleCommandTarget::Exec 方法过去大量使用,所以 WebBrowser 开发者决定创建ExecWB 以使事情变得容易。

 

 

Table 6-5. IWebBrowser2  Vtable 次序的方法

方法

 

 

描述

 

 

Navigate2

 

 

功能基于Navigate 方法,不同在于 Navigate2 允许你导航到飞URL表达的地方,例如Windows shell folder. (Windows shell folder 是指向标示符指针, 或者windows shell命名空间中的 PIDL,)

 

 

QueryStatusWB

 

 

IoleCommandTarget接口的QueryStatus方法在 WebBrowser.中的包装实现

 

 

ExecWB

 

 

IoleCommandTarget接口的Exec方法在 WebBrowser.中的包装实现

 

 

ShowBrowserBar

 

 

显示或者隐藏特定的浏览器条. 该方法仅仅用于InternetExplorer 对象

 

 

 

 

为什么你无论如何都要调用ExecWB方法?因为它提供了你需要的功能(通过IOleCommandTarget::Exec)不是暴露于webbrowser接口。你大概疑惑于为社么开发者不实现扩展属性和方法。记住:COM规则是一旦接口发表就不可改变。所以你不能够不能增加功能而不创建新的接口。

ExecWB 方法允许WebBrowser 开发者增加新的功能而不用创建新的接口。再之, 那是由WebBrowser 通过 ExecWB 代表性的暴露不常用的工的途径, 譬如调用 Save As 对话框或者缩放web页的字体。  ExecWB 工作的方法是传递一个你想调用的command ID 和必需的参数. 太多的 command IDs ,他们包含于OLECMDID 实现文档头文件he DocObj.h .

 

 

 

 

作为举例, 支持缩放web页的内容字体。Internet Explorer 允许你通过View菜单的Text Size子菜单改变字体的大小从最小到最大。 ExecWB 方法暴露了允许你改变显示在浏览器中的文字大小。对于Zoom 命令, 你可指定特殊值0, 1, 2, 3, or 4,  0 是最小字体 ,4是最大字体。以下举例为改变字体为最大(VB):

WebBrowser1.ExecWB OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, _
                   CLng(4), Null

再次代码中, 我调用 ExecWB 方法, 传递OLECMDID_ZOOM 常量给第一个参数. 此常量指定 zoom 操作将被执行。 第二个参数传递给ExecWB 不要提示用户。另外的选择, 你可以提醒用户而是用OLECMDEXECOPT_PROMPTUSER. (见 DocObj.h.)

第三个输入参数指示要设定的文字尺寸。我想是文字尽可能的大,所以我指定了4 。注意我在调用中使用了VB的Clng函数包装此值,转换我指定的此值为一个variant—输入需要的类型.最后为一个输出参数包含任何返回值。因为返回值不需要关心,我传递Null.

 

 

 

 

属性 IWebBrowser2 接口有8个属性。 (Table 6-6 按照vtable次序展示其)。他们都很直观,我仅仅解释恰宏很特别的一个—AddressBar.

Table 6-6. IWebBrowser2 Properties in Vtable Order

属性

 

 

描述

 

 

ReadyState

 

 

返回WebBrowser 的状态(换句话讲 ,该属性指示文档是否完成装载). 尽管你可以使用 ReadyState 属性, 使用 DocumentComplete 时间检测文档是否装载还是比较好些。 (那意味着所有HTML和文档被装载

 

 

Offline

 

 

.返回或者设置检测webbrowser是否处于脱机模式的变量

 

 

Silent

 

 

返回或设置 WebBrowser 是否处于沉默模式。如果处于沉默模式,意味着没有对话框可以被显示.

 

 

RegisterAsBrowser

 

 

.设置或者检测Webbrowser是否是作为顶层浏览器被登记

 

 

RegisterAsDropTarget

 

 

.设置或返回WebBrowser是否作为导航的拖放对象 。如果登记委托放对象,用户可直接拖放连接到浏览器  

 

 

TheaterMode

 

 

返回或者设置Internet Explorer是否处于theater 或者 normal window 模式.。在theater 模式, Internet Explorer占据整个屏幕就像处于FullScreen 模式,但也有最小化的用户接口元素 (此属性仅仅展示于InternetExplorer 对象)

 

 

AddressBar

 

 

显示或者隐藏地址栏(此属性仅仅展示于InternetExplorer 对象)

 

 

Resizable

 

 

返回或者设置Internet Explorer是否可被调整大小, 你可利用此属性防止用户改变webbrowser的大小(此属性仅仅展示于InternetExplorer 对象)

 

 

 

 

 

 

AddressBar 属性允许你显示/隐藏Internet Explorer 地址栏—一个包含可输入URL的文本框 允许你导航到某个Url。 能够显示或者隐藏地址条允许你完全控制你的用户的导航体验

在你的企业网络或者中小学控制用户导航体验.在此环境下,你将控制用户的导航以至于可确定某些不恰当地页面不可访问。你可创建你自己的浏览器。但是如果你没有时间和资源这么做,你可以自动化IE来代替.自动化IE允许你管掉所有的用户界面允许用户导航到某个web页,像菜单条, 工具条,以地址栏. 之后你可建立一定数量的可访问web页连接列表给用户。

 

 

关掉这些用户接口很容易. VB代码:

InternetExplorer1.AddressBar = False
InternetExplorer1.ToolBar = False
InternetExplorer1.MenuBar = False
 

 

 

 

 

 

 

 

 

 

 

 

使用IWebBrowser2创建简单浏览器 使用ie内核的浏览器怎么搞 IWebBrowser2 ie内核的浏览器控件 CAxWindow 容器 CreateWindow 创建windows窗口 阅读详情

相关推荐

使用windows平台IWebBrowser2接口动态创建Web浏览器

使用windows平台IWebBrowser2接口动态创建Web浏览器 wtl平台(使用MFC类似),使用IWebBrowser2创建IE控件,然后浏览网页,当然也可以显示内存中的html字符流。 支持更改右键,支持禁用滚动条,支持word-break,功能强大,可扩展性强。方便自己修改后放入自己的代码中。js代码可回调c++代码。

使用流加载和保存HTML内容&遍历html的信息存入一个ini文件&使用MSHTML分析HTML代码

使用流加载和保存HTML内容&遍历html的信息存入一个ini文件&使用MSHTML分析HTML代码使用流加载和保存HTML内容 本文的部分内容翻译自MSDN文章Loading HTML content from a StreamIPersist* 接口,以及它的附属方法,可以被用于Microsoft® Visual C++® 和 WebBrowser 控件使用流载入和保存HTML内容本文讨论

深之JohnChen的专栏 3303

CEF4Delphi包括VCL、FireMonkey(FMX)和Lazarus组件

CEF4Delphi旨在将基于Chromium的浏览器嵌入到使用Delphi或Lazarus/FPC制作的Windows、Linux和MacOS应用程序中。 CEF4Delphi使用CEF 111.2.7,其中包括铬111.0.5563.148。 CEF4Delphi是在Delphi 11.3上开发和测试的,并已在Delphi 7、Delphi XE、Delphi 10、Delphi 10.2、Delphi 10.3、Delphi 10.4和Lazarus 2.2.6/FPC 3.2.2中进行了测试。CEF4Delphi包括VCL、FireMonkey(FMX)和Lazarus组件。

如何对webbrowser和IE编程(六)

使用VC++和COM API尽管使用VC不像Vb中那么容易自动化IE,但是也不太难,尤其是你理解了CON和COM API。无论你使用MFC, ATL, 或者标准 C++自动化IE,方法都是一样—你使用COM API来实现.VC++中创建一个Internet Explorer实例包括要调用COM API CoCreateInstance ,指定第一个参数为 CLSID_InternetExplore

shanhe的专栏 1万+

IEdownload插件

支持IE下载,能显示下载速度,能复制下载地址到剪贴板

Blender学习笔记——制作向量场

#下载Blender - UE4 - FGA Vector Field Editor插件的压缩包,Github上的下载地址如下:https://github.com/isathar/Blender_UE4_VectorFieldEditor #下载并解压后将FGA VectorFields文件夹复制到C:\Program Files\Blender Foundation\Blender 2.83\2.83\scripts\addons目录下,此步骤可根据blender安装的位置自行调整,只要放入addon

wychao2020的博客 1723

如何对webbrowser和IE编程

  如何对webbrowser和IE编程 一、因为工作缘故,需要研究对IE编程,所以翻译了MS的有关资料,供参考。 IE的体系 WebBrowser Host首先,必须有COM的基础知识,因为IE本身就是COM技术的典型应用。我们看到最上层是WebBrowser的宿主(Host),也就是任何你想重用(ReUse)webb

skyremember的专栏 1万+

3D视觉-结构光测量-线结构光测量

线结构光测量中,由激光器射出的激光光束透过柱面透镜扩束,再经过准直,产生一束片状光。这片光束像刀刃一样横切在待测物体表面,因此线结构光法又被成为光切法。线结构光测量常采用二维面阵CCD作为接受器件,因此只要通过增加垂直于面阵探测器的第三维度方向,就可以实现对三维物体的测量。

qq_20660115的博客 3122

如何对webbrowser和IE编程(一)

如何对webbrowser和IE编程  一、因为工作缘故,需要研究对IE编程,所以翻译了MS的有关资料,供参考。 IE的体系 WebBrowser Host首先,必须有COM的基础知识,因为IE本身就是COM技术的典型应用。我们看到最上层是WebBrowser的宿主(Host),也就是任何你想重用(ReUse)webbrowser control的应用程序,可以是vb程序,也可以是vc或者任何其他

shanhe的专栏 2万+

Unity WebGL发布避坑指南:从内存设置到字体打包,一次搞定所有常见问题

本文详细解析Unity WebGL发布的完整流程,从内存设置到字体打包,提供全面的避坑指南。涵盖关键检查清单、内存与性能优化配置、资源处理专项优化及平台适配技巧,帮助开发者高效解决常见问题,确保项目顺利发布。

weixin_28693309的博客 147

S7-PLCSIM Advanced V3.0虚拟PLC组态下载失败?手把手教你解决IP地址冲突问题

本文针对S7-PLCSIM Advanced V3.0组态下载失败问题,深入剖析了IP地址冲突的根本原因。通过对比博途项目PLC、虚拟网卡及本机物理网卡的IP配置,提供了清晰的排查流程与标准化解决方案,帮助用户快速修复网络可达性问题,确保虚拟PLC仿真顺利进行。

weixin_29306261的博客 193

如何对webbrowser和IE编程(一)

  如何对webbrowser和IE编程一、因为工作缘故,需要研究对IE编程,所以翻译了MS的有关资料,供参考。IE的体系WebBrowser Host首先,必须有COM的基础知识,因为IE本身就是COM技术的典型应用。我们看到最上层是WebBrowser的宿主(Host),也就是任何你想重用(ReUse)webbrows

bird207的专栏 649

UVM入门与进阶学习笔记17——寄存器模型(3)

目录寄存器模型的常规方法mirror、desired和actual valueprediction的分类自动预测显式预测uvm_reg的访问方法mem与reg的联系和差别内建(built-in)sequences寄存器模型内建序列存储模型内建序列寄存器健康检查寄存器应用场景寄存器检查功能覆盖率概述覆盖率自动收集模式覆盖率外部事件触发收集 寄存器模型的常规方法 mirror、desired和actual value 在应用寄存器模型时,除了利用它的寄存器信息,也会利用它跟踪寄存器的值。 寄存器模型中的每

weixin_41979380的博客 7535

如何对webbrowser和IE编程(二)

function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(keyit=window.open(http://www.365key.com/storeit.

B!ng 1786

《LabVIEW ZYNQ实战指南》第6章>>案例解析:基于USB WiFi模块的ZYNQ无线通信部署与Linux RT开发

本文详细解析了如何为ZYNQ开发板部署USB WiFi模块,实现无线通信。通过LabVIEW Linux RT环境,利用封装好的驱动VI,开发者可轻松配置ZYNQ连接无线网络,摆脱网线束缚,实现程序无线部署与远程调试,为工业物联网应用奠定基础。

app77的博客 754

中文核心:swin transformer 农作物病虫害识别 完整代码数据

中文核心:swin transformer 农作物病虫害识别

939

如何对webbrowser和IE编程(四)

如何对webbrowser和IE编程(四) 寄宿WebBrowser 控件我们现在开始在VB和VC中创建一些程序来寄宿(Host)WebBrowser控件。在你完成本部分的样本,你将对如何创建寄宿一个WebBrowser控件的应用程序又一个基本的了解。当你看到如此容易的加入Web浏览功能加入到你的应用程序,我相信你会立即开始实践的。使用VB在VB中,你可以在5分钟内开发一个全功能的

B!ng 2677

我的世界进阶模组开发教程——制作机械动力附属模组

摘要: Create是Minecraft的机械动力模组,其代码结构分为多个关键模块: 数据生成系统:通过CreateRecipeProvider基类实现配方自动化生成,支持多步骤序列化装配配方(SequencedAssemblyRecipeGen),采用建造者模式链式调用; 注册管理:CreateRegistrate扩展了Registrate库,统一管理方块、流体、实体等注册,集成标签页分类和工具提示定制; 伤害系统:DamageTypeTagGen为机械伤害(如钻头、风扇火焰)定义原版兼容的标签; 客户端

qq_24992377的博客 2082

给WebBrowser控件指定IE的使用版本

最近遇到一个WIN7 32位用户,用脚本怎么指定IE版本,怎么不成功,手动修改注册表却成功了,琢磨了一下,发现问题了,所以就想着做一个比较全面的总结,一方面方便自己查阅,另一方面也希望可以帮助到需要帮助的小伙伴们,避免踩坑。若有纰漏,请各位小伙伴们指正;

Commas的博客 3502

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

上一篇: 如何对webbrowser和IE编程(二)
下一篇: 如何对webbrowser和IE编程(四)
Edream2
博客等级 码龄19年 27粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值