WebBrowser禁用触摸缩放
最近做一个WPF触屏的项目,引用到WebBrowser控件,由于是触屏的所以控件里的网页可以缩放,客户提出要求,屏蔽这缩放功能。
于是网上找了很多资料,也换过控件,WebView2 控件使用Microsoft Edge (Chromium)作为呈现引擎。
后来找到一个完美的解决方案,我在这里直接共享出来。
一、设置浏览器仿真
Windows Internet Explorer 8及以后版本。feature_browser_simulation特性定义了Internet Explorer的默认模拟模式,并支持以下值。
| 11001 (0x2AF9 | Internet Explorer 11. Webpages are displayed in IE11 edge mode, regardless of the declared !DOCTYPE directive. Failing to declare a !DOCTYPE directive causes the page to load in Quirks. |
| 11000 (0x2AF8) | IE11. Webpages containing standards-based !DOCTYPE directives are displayed in IE11 edge mode. Default value for IE11. |
| 10001 (0x2711) | Internet Explorer 10. Webpages are displayed in IE10 Standards mode, regardless of the !DOCTYPE directive. |
| 10000 (0x02710) | Internet Explorer 10. Webpages containing standards-based !DOCTYPE directives are displayed in IE10 Standards mode. Default value for Internet Explorer 10. |
| 9999 (0x270F) | Windows Internet Explorer 9. Webpages are displayed in IE9 Standards mode, regardless of the declared !DOCTYPE directive. Failing to declare a !DOCTYPE directive causes the page to load in Quirks. |
| 9000 (0x2328) | Internet Explorer 9. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode. Default value for Internet Explorer 9.
Important In Internet Explorer 10, Webpages containing standards-based !DOCTYPE directives are displayed in IE10 Standards mode.
|
| 8888 (0x22B8) | Webpages are displayed in IE8 Standards mode, regardless of the declared !DOCTYPE directive. Failing to declare a !DOCTYPE directive causes the page to load in Quirks. |
| 8000 (0x1F40) | Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode. Default value for Internet Explorer 8
Important In Internet Explorer 10, Webpages containing standards-based !DOCTYPE directives are displayed in IE10 Standards mode.
|
| 7000 (0x1B58) | Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode. Default value for applications hosting the WebBrowser Control. |
1.找到注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
2.添加DWORD(32位)值,重命名为你的程序名,例如QQMusic.exe
3.根据上面对应的数值设置十进制数值;
二、禁用阻塞本地Script脚本
Internet Explorer 7及以后版本。在启用阻塞本地Script脚本特性时,允许存储在本地机器区域的脚本仅在从本地机器区域加载的网页上运行。
该属性默认时启用的(DWORD) 00000001,我们需将他设为禁用(DWORD) 00000000.
1.找到注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BLOCK_LMZ_SCRIPT
2.添加DWORD(32位)值,并重命名
3.修改十进制数值为0
三、禁用传统输入模式
由于微软在Windows 8以上引入了新的输入模式,为了使遗留的应用程序提供最广泛的兼容性,WebBrowser控件在Windows 8以上的系统中会模拟Windows 7鼠标、触摸和笔的输入模式。
传统输入模式启用时:
1.Trident渲染引擎(mshtml.dll)不处理Windows指针消息。
2.文档对象模型(DOM)指针和手势事件不会触发。
3.鼠标和触摸信息按Windows 7输入模式发送。
4.触摸选择遵循Windows 7模式(“拖动至选择”),而不是Windows 8模式(“点击至选择”)。
5.硬件加速平移和缩放被禁用。
6.Zoom和Pan样式属性将会被忽略
第5条和第6条就是导致我不管怎么去改html样式,都无法屏蔽缩放的原因。因为传统输入模式默认是没有开启的,我们只需将他启用,就可以禁用WebBrowser的触屏功能了。
1.找到注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControlFEATURE_NINPUT_LEGACYMOD
2.添加DWORD(32位)值,并重命名
3.修改十进制数值为0
我们只需在WebBrowser初始化之前调用以下方法:

private void SetBrowSerCompatibilityModel()
{
//获取程序名称
var fileName = Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName);
if (string.Compare(fileName, "devenv.exe", true) == )//确定不是在vs中运行
return; //设置浏览器仿真
using (RegistryKey key = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION",
RegistryKeyPermissionCheck.ReadWriteSubTree))
{
key.SetValue(fileName, (uint), RegistryValueKind.DWord);
} //禁用阻塞本地Script脚本
using (RegistryKey key = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BLOCK_LMZ_SCRIPT",
RegistryKeyPermissionCheck.ReadWriteSubTree))
{
key.SetValue(fileName, (uint), RegistryValueKind.DWord);
}
//禁用传统输入模式
using (RegistryKey key = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_NINPUT_LEGACYMOD",
RegistryKeyPermissionCheck.ReadWriteSubTree))
{
key.SetValue(fileName, (uint), RegistryValueKind.DWord);
}
}
WebBrowser禁用触摸缩放的更多相关文章
- CentOS禁用触摸板
安装xorg-x11-apps包 yum install xorg-x11-apps 查看设备信息 cd /dev/input/ ls //找到触摸板信息 xinput list //找到触摸板的id ...
- Ubuntu 12.04 禁用触摸板
昨天把系统换为Backbox了,版本为Ubuntu12.04,装完后发现其触摸板不能禁用,之前在其他版本都是直接快捷键就可关闭或者启用触摸板,解决方法如下: sudo add-apt-reposito ...
- T450设置插入USB鼠标时自动禁用触摸板
刚入手T450,打字时经常碰到触摸板,很是恼火,于是求助万能的度娘,找了卡饭基佬的教程,实测可行,大家可以试试.<win7下如何设置插入USB鼠标时自动禁用触摸板>,地址:www.kafa ...
- ThinkPad 禁用 触摸板
执行 xinput wowk@wowk:~$ xinput ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTES ...
- win10连接外接鼠标怎么禁用触摸板
Win10笔记本如何禁用触摸板呢?Win10笔记本如何设置“插入鼠标自动禁止触摸板功能”呢?虽然笔记本触摸板在一定程度上可以方便我们的 操作,但是在以鼠标和键盘做为重要的输入设备的情况下,笔记本触摸板 ...
- Ubuntu系统使用命令禁用触摸板等输入设备
[日期:2012-02-22] 本人用的Ubuntu 10.04系统,笔记本上有鼠标和触摸板.默认下,触摸板是开启的, 有时候打字的时候会不时碰到触摸板,添了不少麻烦,所以得禁用触摸板,限于目前所 ...
- ubuntu 12.10 禁用触摸板
1. 打开终端,输入 sudo rmmod psmouse 禁用触摸板,输入 sudo modprobe psmouse 恢复触摸板 2.syndaemon -i 10 -d >/dev/nul ...
- WebBrowser 禁用右键
禁用错误脚本提示 将 WebBrowser控件的 ScriptErrorsSuppressed 设为 true 禁用右键菜单 将 WebBrowser 的 IsWebBrowserContextMen ...
- SL410K 在Ubuntu禁用触摸板
由于之前把系统自带的恢复去了,然后TouchPad一直不能禁用,而后我的410k就只装上ubuntu,想不到在ubuntu上,禁用/启用 触摸板这么方便. http://askubuntu.com/q ...
随机推荐
- NO.2 TI开发环境的搭建 SDK+Code Composer Studio
首先我们要了解TI嵌入式开发环境 对于TI嵌入式开发,首先我们要下载SDK软件包,其次要准备编译环境Code Composer Studio. 对于SDK的下载,可以在官网浏览http://www.t ...
- uwsgi+nginx 502 bad get away 错误
用uwsgi和nginx部署网站时有时候访问网站会出现502错误 配置,启动文件等完全没有问题. 目前解决方法是重启uwsgi就可以了(虽然说502错误应该有很多产生原因啦) 所用命令: $ ps - ...
- 【asp.net core 系列】3 视图以及视图与控制器
0.前言 在之前的几篇中,我们大概介绍了如何创建一个asp.net core mvc项目以及http请求如何被路由转交给对应的执行单元.这一篇我们将介绍一下控制器与视图直接的关系. 1. 视图 这里的 ...
- eclipse 界面复原
Windows-----Perspective-----Reset perspective
- Redis 入门到分布式 (二)API的理解和使用
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 内容: 通用命令 单线程架构 数据结构和内部编码 一.常用的通用命令: keys 计算所有的 ...
- Java实现 LeetCode 572 另一个树的子树(遍历树)
572. 另一个树的子树 给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树.s 的一个子树包括 s 的一个节点和这个节点的所有子孙.s 也可以看做它自身的一棵子树 ...
- Java实现 LeetCode 492 构造矩形
492. 构造矩形 作为一位web开发者, 懂得怎样去规划一个页面的尺寸是很重要的. 现给定一个具体的矩形页面面积,你的任务是设计一个长度为 L 和宽度为 W 且满足以下要求的矩形的页面.要求: 你设 ...
- Java实现 LeetCode 354 俄罗斯套娃信封问题
354. 俄罗斯套娃信封问题 给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现.当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一 ...
- Java实现 蓝桥杯VIP 算法提高 打水问题
算法提高 打水问题 时间限制:1.0s 内存限制:512.0MB 问题描述 N个人要打水,有M个水龙头,第i个人打水所需时间为Ti,请安排一个合理的方案使得所有人的等待时间之和尽量小. 输入格式 第一 ...
- Java实现字符串的旋转
1 问题描述 给定一个字符串,要求将字符串前面的若干个字符移到字符串的尾部.例如,将字符串"abcdef"的前3个字符'a'.'b'和'c'移到字符串的尾部,那么原字符串将变成&q ...