WPF中使用浏览器控件WebBrowser
设置使用IE的版本
public static class Extensions{#region 设置WebBroswer 使用IE版本public static void SetWebBrowserFeatures(int ieVersion){// don't change the registry if running in-proc inside Visual Studio if (LicenseManager.UsageMode != LicenseUsageMode.Runtime)return;//获取程序及名称 var appName = System.IO.Path.GetFileName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);//得到浏览器的模式的值 UInt32 ieMode = GeoEmulationModee(ieVersion);var featureControlRegKey = @"HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\";//设置浏览器对应用程序(appName)以什么模式(ieMode)运行 Registry.SetValue(featureControlRegKey + "FEATURE_BROWSER_EMULATION",appName, ieMode, RegistryValueKind.DWord);// enable the features which are "On" for the full Internet Explorer browser Registry.SetValue(featureControlRegKey + "FEATURE_ENABLE_CLIPCHILDREN_OPTIMIZATION",appName, 1, RegistryValueKind.DWord);}/// <summary> /// 获取浏览器的版本 /// </summary> /// <returns></returns> static int GetBrowserVersion(){int browserVersion = 0;using (var ieKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer",RegistryKeyPermissionCheck.ReadSubTree,System.Security.AccessControl.RegistryRights.QueryValues)){var version = ieKey.GetValue("svcVersion");if (null == version){version = ieKey.GetValue("Version");if (null == version){System.Windows.MessageBox.Show("只支持IE浏览器");}}int.TryParse(version.ToString().Split('.')[0], out browserVersion);}//如果小于7 if (browserVersion < 7){System.Windows.MessageBox.Show("不支持的浏览器版本!");}return browserVersion;}/// <summary> /// 通过版本得到浏览器模式的值 /// </summary> /// <param name="browserVersion"></param> /// <returns></returns> static UInt32 GeoEmulationModee(int browserVersion){UInt32 mode = 11000; // Internet Explorer 11. Webpages containing standards-based !DOCTYPE directives are displayed in IE11 Standards mode. switch (browserVersion){case 7:mode = 7000; // Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode. break;case 8:mode = 8000; // Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode. break;case 9:mode = 9000; // Internet Explorer 9. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode. break;case 10:mode = 10000; // Internet Explorer 10. break;case 11:mode = 11000; // Internet Explorer 11 break;}return mode;}#endregion}
屏蔽脚本错误弹窗
使用的是System.Windows.Controls.WebBrowser时使用如下代码
private void Browser_Navigated(object sender, NavigationEventArgs e){var fiComWebBrowser = typeof(WebBrowser).GetField("_axIWebBrowser2", BindingFlags.Instance | BindingFlags.NonPublic);if (fiComWebBrowser == null)return;object objComWebBrowser = fiComWebBrowser.GetValue(browser);if (objComWebBrowser == null)return;objComWebBrowser.GetType().InvokeMember("Silent", System.Reflection.BindingFlags.SetProperty, null, objComWebBrowser, new object[] { true });}
使用的是 System.Windows.Forms.WebBrowser时只需将WebBrowser的ScriptErrorsSuppressed设置为true
browser.ScriptErrorsSuppressed = true;
处理弹出新窗口
WPF中的WebBrowser 详情见监听WPF的WebBrowser控件弹出新窗口的事件
WinFrom中的WebBrowser
通过NewWindow事件加以处理,代码如下:
private void InnerBrowser_NewWindow(object sender, System.ComponentModel.CancelEventArgs e){e.Cancel = true;try{InnerBrowser.Navigate(InnerBrowser.StatusText);}catch (Exception ex){}}
[代码下载地址](https://download.csdn.net/download/sanyuni/10729884)
WPF中使用浏览器控件WebBrowser相关推荐
- 在WPF中使用WinForm控件方法
在WPF中使用WinForm控件方法 原文:在WPF中使用WinForm控件方法 1. 首先添加对如下两个dll文件的引用:WindowsFormsIntegration.dll,Syste ...
- 如何在wpf中使用winform控件或者winform的自定义控件
前言 在wpf中使用winform控件或者winform的自定义控件 一.添加引用 WindowsFormsIntegration.dll System.Windows.Forms.dll 提示:这两 ...
- C# .NET 6.0已经取消了Framework 4.8的WebBrowser控件,几款NuGet中的浏览器控件介绍
即使在C# .NET 6.0..NET 7.0在选择工具箱项COM组件添加Microsoft Web Browser,工具箱也没有WebBrowser控件. WebBrowser控件: WebBrow ...
- 如何在WPF中使用Winform控件
要在WPF中使用WInform组件,必须将WInform组件放在宿主WindowsFormsHost中. WindowsFormsHost是WPF的一个控件,它允许在WPF应用程序中托管Windows ...
- 如何在WPF中调用Winform控件
功能实现主要分三步: 1.添加两个引用:WindowsFormsIntegration.dll (负责整合WPF和Windows).System.Windows.Forms. 2.在 XAML文件中添 ...
- WPF中使用Winform控件
在项目中遇到使用WPF做上位机,引用Winform控件,特此做一下总结: 1.在设计界面添加: xmlns:wf="clr-namespace:System.Windows.Forms;as ...
- 【柏拉图】在WPF中利用DevExpress控件进行柏拉图展示
dx控件版本为15.2 因为17.2在win7系统中可能存在报错 有知道原因的大佬烦请告知一下 <Grid Grid.Column="1"><dxc:ChartC ...
- 如何在WPF中调用C#控件库(HexEdit)
1 编写一个Hex Edit控件,使用VS2010建立一个类控件库,分别增加两个类文件,一个命名为HexEdit.cs, 一个命名为TextEditControl.cs,具体内容如下所示: 1)Hex ...
- WPF中使用InteractiveDataDisplay控件画图
在网址GitHub下载InteractiveDataDisplay 1 SyncGraphsSample <Window x:Class="SyncGraphsSample.MainW ...
最新文章
- android Canvas 最基础知识总结
- asp.net学习之 数据绑定控件--List数据绑定控件
- 设置JAVA环境变量
- C++指针初始化总结
- Linux的编译器vi之最详细介绍
- 想了解Sleuth+zipkin分布式请求链路追踪,来看看这篇文章吧!
- 智能指针——auto_ptr
- IOS设备唯一标示符的方案比较
- Android之webview长按超链接类型获取链接文字及url、长按图片链接类型分别获取图片和链接的url
- Acwing 252. 树
- js基础——cssText
- eclipse常用插件之FindBugs
- java实现身份证号码的严格校验!
- 「AI产品」产品小姐姐分析抖音背后的计算机视觉技术
- Ubuntu20.04安装Mysql(亲测有效,一定要按步骤来)
- 基于TransferNet和nlpcc2018知识图谱搭建问答服务
- Android RSA加密解密
- 多元线性回归matlab实现
- LeetCode(871):最低加油次数 Minimum Number of Refueling Stops(Java)
- 关于区块链的三个隐喻
热门文章
- 斗仙服务器维护礼包,《斗仙》2.730版本更新公告(测试区 2017.6.26)
- PPT里对指定三角形的三条边作垂直平分线的VBA代码
- SuperPoint学习训练纪录 盘点各种报错解决方法(二)
- .NET Core Apollo 配置中心
- 20张Python高清数据分析全知识地图,强烈建议保存
- Oracle项目管理之Primavera Unifier学习地图(持续更新)
- android4.2.2 surfaceflinger,[imx6 ]Android4.4.3--surfaceflinger导致系统起不来,ldb显示问题...
- open函数O_CLOEXEC作用
- win10下用nginx搭建一个点播服务器支持各类视频格式
- WPF去掉边框及设置圆角框