博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决 winform打开网页 和WebBrowser打开链接360误报拦截的问题
阅读量:7182 次
发布时间:2019-06-29

本文共 2163 字,大约阅读时间需要 7 分钟。

以下方法我已经在自己电脑上验证通过,其他电脑并未测试,请广大读者自行验证并反馈,如果有更好的方法请指教。

在winform中如果使用这种方法弹出网页,例如这样

Process.start("http://www.xgjxc.top");

或者另外如果winform中嵌入了一个webbrowser控件,加载了一个网页,例如这样

this.webBrowser1.Navigate("http://www.xgjxc.top/home.html“);

网页中有个超链接,例如这样

那么点击这个超链接会自动打开一个浏览器窗口

 

如果按照上面的方法来打开网页,十有八九会出现以下的画面: 

技术分享

 

不得不说,360越来越流氓了,他完全不看软件有无恶意特征码,也完全不看要打开的网页有无恶意内容,只要你要打开一个网页,则拦截之。

另外一个就是我把程序用VS自带打包打包了一下,碰到没有安装.Net的客户机,则自动从官方位置下载安装包进行安装,这个时候360照样拦截不误,如下图:

一共拦截两次,.Net包拦截一下,简体中文语言包拦截一次,打包的时候都是选的”从官方未知下载组件“,不得不说,360就是一个大傻逼。

技术分享

 

下面进入正题,说下怎么解决打开网页这件事。

winform中点击按钮直接打开网页,采用下面方案:

核心代码:

public partial class Home : Form    {        [DllImport("shell32.dll")]        public extern static IntPtr ShellExecute(int hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, int nShowCmd);        public enum ShowWindowCommands : int        {            SW_HIDE = 0,            SW_SHOWNORMAL = 1,            SW_NORMAL = 1,            SW_SHOWMINIMIZED = 2,            SW_SHOWMAXIMIZED = 3,            SW_MAXIMIZE = 3,            SW_SHOWNOACTIVATE = 4,            SW_SHOW = 5,            SW_MINIMIZE = 6,            SW_SHOWMINNOACTIVE = 7,            SW_SHOWNA = 8,            SW_RESTORE = 9,            SW_SHOWDEFAULT = 10,            SW_MAX = 10        }        public Home()        {            InitializeComponent();        }}

  然后点击事件中的代码:

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)        {            ShellExecute(0, @"open", @"http://www.xgjxc.top", null, null, (int)ShowWindowCommands.SW_NORMAL);        }

这样的话360就不在会拦截了。

同理,如果是点击webbrowser中的连接,思路是这样的,首先拦截这个点击动作,不让他弹出网页,而采用上面的方法进行弹出,则就会跳过拦截了。

代码如下:

加载网页

private void Home_Load(object sender, EventArgs e)        {            this.webBrowser1.Navigate("http://www.xgjxc.top/home.html");        }

 

注册NewWindow事件:  

private void webBrowser1_NewWindow(object sender, CancelEventArgs e){ShellExecute(0, @"open", this.webBrowser1.StatusText.ToString(), null, null, (int)ShowWindowCommands.SW_NORMAL);e.Cancel = true;}

首先e.Cancel=true 让点击动作失效,然后this.webBrowser1.StatusText.ToString()获取到刚才点击的连接,StatusText是状态栏文字,我们知道浏览器如果鼠标移动到连接上,状态栏是会显示连接URL的。

 

希望可以帮到同样受到360困扰的朋友。

转载地址:http://chukm.baihongyu.com/

你可能感兴趣的文章
CGI
查看>>
nginx配置http2
查看>>
project.pbxproj 文件的组织及说明
查看>>
Android 网络请求方面的资料
查看>>
ajax跨域的解决办法
查看>>
ZooKeeper管理指南
查看>>
jqGrid随浏览器缩放自适应宽度
查看>>
JavaScript函数补完:splice()数组操作
查看>>
Souce Control Management-EGit
查看>>
长连接的心跳及重连设计
查看>>
ORA-00020: maximum number of processes (1000) 错误处理
查看>>
cas单点登录集群如何优雅的退出
查看>>
[置顶] spring2.5 + struts2 + ibatis2.3.4 框架整合开发
查看>>
第一次作业
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
安装配置管理 之 安装和配置 Java J2SE Development Kit(JDK)
查看>>
ORACLE常用函数实例
查看>>
php 调用webservers 错误,请高手帮助
查看>>