源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

在C#中 webbrowser的使用心得

  • 时间:2022-05-15 23:24 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:在C#中 webbrowser的使用心得
[b]1.首先是屏蔽浏览器右键菜单的问题, [/b]用以下代码可以让浏览器用自己的右键菜单: tempBrowser.ContextMenuStrip = this.contextMenuStrip1; tempBrowser.IsWebBrowserContextMenuEnabled = false; 但是很不幸,上面的代码在有的机器上不起作用,开始以为是环境或者流氓插件的问题,折磨了很久无果,后来把.net升级到4.0竟然解决了这个问题,估计就是微软webbrowser控件的问题 [b]2.屏蔽拷贝快捷键和截屏快捷键[/b]         public bool PreFilterMessage(ref Message msg)         {             if (msg.Msg == WM_KEYDOWN || msg.Msg == WM_KEYUP)             {                 StringBuilder sb = new StringBuilder(50);                 GetClassName(msg.HWnd, sb, 50);                 if (sb.ToString().ToLower() == "internet explorer_server")                 {                     if ((Control.ModifierKeys == Keys.Control && (((Keys)msg.WParam.ToInt32() & Keys.KeyCode) == Keys.C)) || ((Keys)msg.WParam.ToInt32() & Keys.KeyCode) == Keys.PrintScreen || ((Keys)msg.WParam.ToInt32() & Keys.KeyCode) == Keys.Menu)                     {                         MessageBox.Show("当前系统禁止内容复制,如需系统内部复制粘贴,请使用右键菜单的功能!", "屏蔽");                         Clipboard.SetDataObject("null");                         return true;                     }                 }             }             return false;         } [b]3.解决webbrowser遇到window.open无法打开页面的问题 [/b]是因为打开页面的url一般是通过myBrowser.StatusText来获取的,但是window.open是无法获取真正的url的,解决办法就是在webbrowser的NewWindow事件中特殊处理window.open的事件,获取真正的url地址             WebBrowser myBrowser = (WebBrowser)sender;             TabPage mypage = (TabPage)myBrowser.Parent;             string NewURL = "";             string html = myBrowser.Document.ActiveElement.OuterHtml;             string pattern = @"<button.*?onclick=.*\('(.*)'\).*";             MatchCollection matches = Regex.Matches(html, pattern, RegexOptions.IgnoreCase);             if (matches.Count == 1)             {                 Match m = matches[0];                 Group g = m.Groups[1];                 if (g != null && g.Length > 0)                 {                     string address = myBrowser.Url.Scheme + "://" + myBrowser.Url.Host + ":" + myBrowser.Url.Port + g.ToString();                     NewURL = address.Replace("&", "&");                 }             }             NewURL = string.IsNullOrEmpty(NewURL) ? myBrowser.StatusText : NewURL; 很遗憾这种方法只能适合一页中只有一个window.open的情况,如果有多个window.open,我们可以用下面的方法:在webbrowser的DocumentCompleted中,if (mybrowser.DocumentText.IndexOf("window.open(") > -1),然后把所有window.open替换为window.location.href。但是后来发现系统执行过这个过程之后,webbrowser的url会变成原来的url,不知道有没有朋友能知道为什么。 [b]4.屏蔽webbrowser拖拽网页内容到外部word等的问题 [/b]        private void tempBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)         {             WebBrowser tempBrowser = (WebBrowser)sender;             tempBrowser.Parent.Text = tempBrowser.DocumentTitle;             HtmlElement ele = tempBrowser.Document.CreateElement("script");//新增             ele.SetAttribute("type", "text/javascript");             ele.SetAttribute("text", "document.body.ondragstart=function(){window.event.returnValue=false;};");             tempBrowser.Document.Body.AppendChild(ele);  }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部