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 ...
最新文章
- C# 值类型与引用类型
- 限制系统扩展能力的瓶颈有哪些?
- sqlserver存储过程sp_send_dbmail邮件(html)实际应用
- linux中的httpd源码安装方法
- android手机短信拦截器,垃圾短信退订套路深 手机上装拦截软件是可行方法
- MIPS 通用寄存器
- 配置Apache Basic和Digest认证
- 【定时同步系列4】QPSK调制+OM定时(FFT实现及频域补偿)+信号分段处理+误码率曲线之MATLAB仿真(复信号模型)
- Node.js文件操作二
- java内存管理之内存模型
- mysql密码正确却提示错误,不使用密码反而能登录
- 【PHP学习】—get请求传递参数(五)
- ubuntu 一张网卡绑定多个ip
- CSDN极客头条使用指南
- html网页显示时中文乱码
- PHP + AJAX实现幸运转盘抽奖
- Luogu3307:[SDOI2013]项链
- 喝酒骑行电瓶车属于违法或者犯罪吗?
- ssm+bootsrap人力资源考勤系统-JAVA【数据库设计、源码、开题报告】
- 迪拜要破产 经济危机第二波来啦