WPF 修改Webbrowser的IE版本小程序(32位)
偶尔用Winform的Webbrowser,但是ie版本太低。
手改改注册表了太慢了。
弄个了程序,修改的代码时网上的,自己就是写了个界面。
支持IE11。
XAML页面代码
<Window.Resources>
<ObjectDataProvider x:Key="ieList" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="local:IEVersion"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<ListBox BorderThickness="0,0,1,0" MinWidth="150" ItemsSource="{Binding Source={StaticResource ieList}}" x:Name="IETypeList" Grid.Column="0"/>
<Grid Grid.Column="1">
<Grid.Resources>
<Style TargetType="Grid">
<Setter Property="Margin" Value="0,0,0,10"/>
</Style>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="IE版本"/>
<TextBlock Margin="10,0,0,0" Grid.Column="1" Foreground="Red" Text="{Binding ElementName=IETypeList,Path=SelectedItem}" />
</Grid>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="程序名称(不用.exe)"/>
<TextBox Margin="10,0,0,0" Grid.Column="1" x:Name="ProgramNAME"/>
</Grid>
<Grid Grid.Row="2">
<Button Content="写入" x:Name="WriteBtn" Click="WriteBtn_Click"/>
</Grid>
</Grid>
</Grid>
后台代码:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
} private void WriteBtn_Click(object sender, RoutedEventArgs e)
{
if (IETypeList.SelectedIndex < )
return;
if (ProgramNAME.Text.Length < || string.IsNullOrWhiteSpace(ProgramNAME.Text))
return;
var select = (IEVersion)IETypeList.SelectedItem; var name = ProgramNAME.Text+=".exe"; IE.SetIE(select, name); ProgramNAME.Text.Replace(".exe", string.Empty);
}
}
IE类:
public enum IEVersion
{
强制ie11,//11001
标准ie11,//
强制ie10,//10001 (0x2711) Internet Explorer 10。网页以IE 10的标准模式展现,页面!DOCTYPE无效
标准ie10,//10000 (0x02710) Internet Explorer 10。在IE 10标准模式中按照网页上!DOCTYPE指令来显示网页。Internet Explorer 10 默认值。
强制ie9,//9999 (0x270F) Windows Internet Explorer 9. 强制IE9显示,忽略!DOCTYPE指令
标准ie9,//9000 (0x2328) Internet Explorer 9. Internet Explorer 9默认值,在IE9标准模式中按照网页上!DOCTYPE指令来显示网页。
强制ie8,//8888 (0x22B8) Internet Explorer 8,强制IE8标准模式显示,忽略!DOCTYPE指令
标准ie8,//8000 (0x1F40) Internet Explorer 8默认设置,在IE8标准模式中按照网页上!DOCTYPE指令展示网页
标准ie7//7000 (0x1B58) 使用WebBrowser Control控件的应用程序所使用的默认值,在IE7标准模式中按照网页上!DOCTYPE指令来展示网页
}
public class IE
{
public static void SetIE(IEVersion ver, string Name)
{
string productName = Name;//获取程序名称 object version;
switch (ver)
{
case IEVersion.标准ie7:
version = 0x1B58;
break;
case IEVersion.标准ie8:
version = 0x1F40;
break;
case IEVersion.强制ie8:
version = 0x22B8;
break;
case IEVersion.标准ie9:
version = 0x2328;
break;
case IEVersion.强制ie9:
version = 0x270F;
break;
case IEVersion.标准ie10:
version = 0x02710;
break;
case IEVersion.强制ie10:
version = 0x2711;
break;
case IEVersion.标准ie11:
version = 0x2AF8;
break;
case IEVersion.强制ie11:
version = 0x2EDF;
break;
default:
version = 0x1F40;
break;
} RegistryKey key = Registry.CurrentUser;
RegistryKey software =
key.CreateSubKey(
@"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION\" + productName);
if (software != null)
{
software.Close();
software.Dispose();
}
RegistryKey wwui =
key.OpenSubKey(
@"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", true);
//该项必须已存在
if (wwui != null)
{
wwui.SetValue(productName, version, RegistryValueKind.DWord);
MessageBox.Show("写入完毕");
}
else
MessageBox.Show("写入失败");
}
}
程序截图
源代码和程序下载
WPF 修改Webbrowser的IE版本小程序(32位)的更多相关文章
- VSTO学习笔记(七)基于WPF的Excel分析、转换小程序
原文:VSTO学习笔记(七)基于WPF的Excel分析.转换小程序 近期因为工作的需要,要批量处理Excel文件,于是写了一个小程序,来提升工作效率. 小程序的功能是对Excel进行一些分析.验证,然 ...
- CLR调试报错“Visual Studio远程调试监视器 (MSVSMON.EXE) 的 64 位版本无法调试 32 位进程或 32 位转储。请改用 32 位版本”的解决
Win7 64位电脑上进行visual studio的数据库项目的CLR存储过程进行调试时,报错: ---------------------------Microsoft Visual Studio ...
- iOS如何兼容的应用程序32位系统和64Bit系统
苹果发布iPhone5S时刻,64应用程序位去了眼前.当时我看到苹果公布的官方数据iOS7.x的SDK支撑64位应用程序.而内置的应用程序已经64位置. 我记得自己刚刚接触电脑时还有16位的系统,指针 ...
- v2.0版本小程序开发心得(代码之外)
总结一些代码之外的事情: 做优先该做的事情 分清主次,一天只有24小时,人的精力也是有限的,而且经常性的是,在某个时间爆发性的产生了大量的问题.这些问题集中的产生,需要一个一个的解决,但是人的精力是有 ...
- 小程序2-基本架构讲解(一)JSON配置与详解
项目里边生成了不同类型的文件: .json 后缀的 JSON 配置文件 .wxml 后缀的 WXML 模板文件 .wxss 后缀的 WXSS 样式文件 .js 后缀的 JS 脚本逻辑文件 JSON 配 ...
- 微信小程序踩坑集合
1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...
- 微信小程序学习指南
作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- 微信小程序-1
微信小程序 (开发微信小程序基础:HTML+js+css) l 准备工作 工具安装 开发工具是由微信官方提供 项目的预览(校验环境) l 开发体验阶段 - Hello world ...
- C#开发微信小程序
个人见解,欢迎交流,不喜勿喷. 微信小程序相比于微信公众号的开发,区别在于微信小程序只请求第三方的数据,整个界面的交互(view)还是在微信小程序上实现,前后端完全分离,说白了,微信小程序开发与具 ...
随机推荐
- 《Web Development with Go》Mangodb插入map,slice,Embedded Documents
这几个好理解, 更好的实现,再说. package main import ( "fmt" "log" "time" "gopkg ...
- JavaScript-----8.数组
1.数组的概念 数组是指一组数据的集合,其中每个数据被称为元素,在数组中可以存放任意类型的元素 2. 创建数组 创建数组的两种方式: 利用new创建数组 利用数组字面量创建数组(最常用) 2.1 利用 ...
- 上手OrangePi Zero+
一.安装系统 所需材料:系统镜像文件.镜像烧录工具.至少2G的内存卡(推荐8G以上).读卡器 1.下载系统镜像 官方系统下载地址,由于官方系统更新截止到17年,所以我选择的是Armbian系统.下载地 ...
- Java连载55-接口的作用、接口举例
一.接口的作用 1.可以使项目分层,所有层都面向接口开发,开发效率提高了. 2.接口使代码和代码之间的耦合度降低,就像内存条和主板的关系,变得“可插拔”,可以随意切换. 总结:接口和抽象类能够完成某 ...
- swoole为什么不能代替nginx
Swoole不能代替Apache和Nginx这些通用的HTTP服务器. 但基于Swoole开发的PHP应用不依赖Apache和Nginx也能提供生产级别的HTTP服务. 有需要学习交流的友人请加入交流 ...
- NXP恩智浦VEGA织女星开发板免费申请!
前言 大概两周前申请了一块NXP恩智浦的开发板,今天终于收到了!在这里推荐给大家,官方网站刚上线一个月左右,目前申请的人还不算多,感兴趣的朋友可以申请一个,体验一下这个四核性能怪兽.大厂就是大气,包装 ...
- 什么是面向对象编程(OOP)?
Java 程序员第一个要了解的基础概念就是:什么是面向对象编程(OOP)? 玩过 DOTA2 (一款推塔杀人的游戏)吗?里面有个齐天大圣的角色,欧洲战队玩的很溜,国内战队却不怎么会玩,自家人不会玩自家 ...
- 使用Redis实现UA池
前提 最近忙于业务开发.交接和游戏,加上碰上了不定时出现的犹豫期和困惑期,荒废学业了一段时间.天冷了,要重新拾起开始下阶段的学习了.之前接触到的一些数据搜索项目,涉及到请求模拟,基于反爬需要使用随机的 ...
- ArcGIS api for JavaScript 3.27 FindTask查询功能
在ArcGIS API中查询功能是经常使用的,常用的三个查询分别是FindTask,QueryTask,IdentifyTask.它们各自都有自己的特点. 查询功能分为属性查询和空间查询 FindTa ...
- Thymeleaf常用语法:数据迭代
Thymeleaf数据迭代使用th:each属性,可以迭代数组.List.Set和Map等,数组.List.Set的迭代方法类似,迭代Map则会得到一个java.util.Map.Entry对象.在迭 ...