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