C# WebBrowser禁止F5刷新
在用写一个桌面软件的过程中,用到webbrowser实现界面。这时有一个禁止webbrowser通过f5按键进行刷新的要求。本着边做边学的原则,本菜查了一下百度,原来这么简单,代码如下:
this.webBrowser1.WebBrowserShortcutsEnabled = false;
哈哈,成功了。继续完成接下来的任务,写着写着,发现不对,很不对劲。刚刚那一句代码,不仅把F5这个快捷键禁用了,而且连ctrl+c、ctrl+v这些快捷键一并禁止了。这该如何是好。这时本菜第一反映:键盘钩子。可是转念一想,用了C#还要动用钩子,明显是姿势不对啊。嗯,不到最后万不得已,绝不动用钩子宝典。接下来,本菜已在不归路上越走越远。
走遍了大街,串遍了小巷,翻遍了百度,查遍了google,最后连msdn和open stack都查了个遍。看到各国网友的答案是:很难做到,几乎不可能。(看到坑爹队友不局限在我们身旁)。正当本菜要拿起钩子宝典之时,抱着最后一丝挣扎的希望,翻了一翻webbrowser的函数列表,翻着翻着,顿时眼前一亮,锵锵锵锵:
public class WebBroswer : System.Windows.Forms.WebBrowser
{
public WebBroswer()
: base()
{
} public override bool PreProcessMessage(ref Message msg)
{
switch (msg.Msg)
{
case ApiCaller.WM_KEYDOWN:
int vk = Ptr.PtrToInt(msg.WParam);
if (vk == ) return false; //钩掉f5
break; }
return base.PreProcessMessage(ref msg);
}
}
本次大法的主要思路是,重载WebBrowser,处理掉F5的键盘消息。(上面代码中的ApiCaller类是一个自定义类,只要判断WM_KEYDOWN即可)
其实在此之前,本菜在WndProc和DefWndProc这两个函数之间折腾很久。一直没转过弯来,WebBrowser的键盘消息WM_KEYDOWN、WM_KEYUP压根儿不会经过这两个函数。因为在这两个函数之前,就分发到内部子控件了。好在及时醒悟,这次完全是吃了没文化的亏,希望这些经历小结,能给大家带来帮助。如果这个知识点对您有用,请继续传播下去。
C# WebBrowser禁止F5刷新的更多相关文章
- js禁止页面刷新禁止用F5键刷新,禁止右键
<script language="javascript"> //禁止用F5键 function document.onkeydown() { if ...
- C# webbrowser实现真正意义上的F5刷新
关于webbrowser的刷新在C#中有提供方便的方法: webbrowser.refresh(); 但是有时候会发现,不给力啊 那怎么办? 还有一招: webBrowser1.Document.Ex ...
- jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等
禁用鼠标右键菜单栏 $("body").bind("contextmenu", function(event) { return false; }); 禁用快捷 ...
- javaScript阻止浏览器F5刷新
1 <script type="text/javascript"> 2 //禁止用F5键 3 document.onkeydown = function (e) { 4 ...
- 在浏览器地址栏按回车、F5、Ctrl+F5刷新网页的区别
不少同学问,不都是刷新吗?还有什么区别?其实,还是有的. 其中,在地址栏按回车又分为两种情况.一是请求的URI在浏览器缓存中未过期,此时,使用Firefox的firebug插件在浏览器里显示的HTTP ...
- 电脑的f5刷新不了
新买的电脑,f5刷新不了页面,网上查了后发现是fn功能键的原因.同时fn+f5即可刷新.可是依然感觉好别扭... 按下fn+esc,再只按f5,就可以刷新页面了.神奇...
- 转:在浏览器地址栏按回车、F5、Ctrl+F5刷新网页的区别
转:http://www.cnblogs.com/mofish/archive/2012/06/08/2541604.html 不少同学问,不都是刷新吗?还有什么区别?其实,还是有的. 其中,在地址栏 ...
- jQuery 中屏蔽浏览器的F5刷新功能
//支持ie(6,7,8),火狐,谷歌,opera,等主流浏览器 $(document).keydown(function(e){ e=window.event||e; if(e.keyCode==1 ...
- jquery禁用右键单击功能屏蔽F5刷新
1.禁用右键单击功能$(document).ready(function() { $(document).bind("contextmenu",function(e) { aler ...
随机推荐
- Kali命令集
转载自:http://www.shiyanbar.com/questions/980 系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显 ...
- List去重
因为用到list,要去除重复数据,尝试了几种方法.记录于此... 测试数据: List<string> li1 = new List<string> { "8&quo ...
- 关于C#继承运用的总结
整体代码部分: 解决方案: 父类Person类: using System; using System.Collections.Generic; using System.Linq; using Sy ...
- Thread.Sleep(0) vs Sleep(1) vs Thread.Yeild()
注:本文为个人学习摘录,原文地址:http://www.cnblogs.com/stg609/p/3857242.html 本文将要提到的线程及其相关内容,均是指 Windows 操作系统中的线程,不 ...
- cuda编程(一)
环境安装和例程运行 显卡主要有两家,ATI.NVIDIA,简称A卡和N卡.随着GPU计算能力的上升,采用GPU并行计算来加速的应用越来越多. Nvidia创立人之一,黄仁勋(Jen-Hsun Huan ...
- 视频编辑类sdk--lansoeditor--更新啦, 完全免费,欢迎下载
当前版本是20160506 beta, 增加了兼容高通的64位硬件编码器增加MediaInfo类,您可以轻松获取多媒体中的各种信息.增加了演示的15个ffmpeg处理方法,您可以用这些方法实现秒拍图像 ...
- svg图片转换为WEB字体图标
今天我学会了使用字体制作网站 icomoon.io 制作web文本图标.跟我一起学习吧! (1)字体制作网站 icomoon.io 点击 icomoon APP ---> imp ...
- 9款.net反编译的必备神器
编辑来给大家盘点下.net的反编译工具: 1.Reflector Reflector是最为流行的.Net反编译工具.Reflector是由微软员工Lutz Roeder编写的免费程序.Reflecto ...
- Redis 集群解决方案比较
调研比较了三个Redis集群的解决方案: 系统 贡献者 是否官方Redis实现 编程语言 Twemproxy Twitter 是 C Redis Cluster Redis官方 是 C Codis 豌 ...
- sqlserver 操作xml
1.xml.exist 输入为XQuery表达式,返回0,1或是Null.0表示不存在,1表示存在,Null表示输入为空 2.xml.value 输入为XQuery表达式,返回一个SQL ...