使用 ExecWB 与原生 .NET 2.0 WebBrowser 控件






4.67/5 (5投票s)
如何通过访问 ExecWB 来缩放标准的 WebBrowser 控件。
引言
在 VB.NET 2008 环境中最令人困惑但又有趣的组件之一是捆绑的标准 WebBrowser
控件(或者类,如果你更喜欢的话)。它暴露了许多常用方法和属性,但缺少一个在完整浏览器(又名 SHDocVw
或 Ieframe.dll)版本中可以找到的最有用的元素,即 ExecWB
命令。以下类提供了一个简单的示例,说明如何从 System.Windows.Forms.WebBrowser
类利用 ExecWB
的强大功能。
背景
这个解决方案的出现源于我对使用 WebBrowser
控件的研究,并偶然进入了主题变体的复杂世界。为什么无法在一个解决方案中利用所有这些功能,我无法理解。然而,我的任务是继续简化关于 Microsoft WebBrowser 的统一理论。
使用代码
- 在 VB.NET 2008 中创建一个新项目
- 在设计模式下显示你的窗体
- 添加一个标准的
WebBrowser
控件,将其从工具箱拖动到窗体上 - 在属性网格中将
WebBrowser
的URL
属性更改为类似如下内容:https://codeproject.org.cn - 从工具箱向窗体添加一个
Button
控件 - 将
Button
的 Text 属性从 Button1 更改为 Zoom - 切换到源代码编辑模式
- 替换代码,它应该如下所示
Class Form1
End Class
为以下代码:
Public Class Form1
Private Enum Exec
OLECMDID_OPTICAL_ZOOM = 63
End Enum
Private Enum ExecOpt
OLECMDEXECOPT_DODEFAULT = 0
OLECMDEXECOPT_PROMPTUSER = 1
OLECMDEXECOPT_DONTPROMPTUSER = 2
OLECMDEXECOPT_SHOWHELP = 3
End Enum
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Try
Dim Res As Object = Nothing
Dim MyWeb As Object
MyWeb = Me.WebBrowser1.ActiveXInstance
MyWeb.ExecWB(Exec.OLECMDID_OPTICAL_ZOOM, _
ExecOpt.OLECMDEXECOPT_DONTPROMPTUSER, 50, IntPtr.Zero)
Catch ex As Exception
MsgBox("Error:" & ex.Message)
End Try
End Sub
End Class
关注点
上面的代码仅显示了缩放网页的枚举。要使用所有 OLECMDID
枚举命令,只需将它们添加到上面显示的 Enum Exec
中。你可以在 MSDN 上找到所有可用的枚举。
历史
这是此解决方案的第一个版本。如果有人对如何使其更简洁有任何建议,请告诉我。