a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

在C#中 webbrowser的使用心得

2020-01-24 03:28:51
字體:
來源:轉載
供稿:網友

1.首先是屏蔽瀏覽器右鍵菜單的問題,
用以下代碼可以讓瀏覽器用自己的右鍵菜單:
tempBrowser.ContextMenuStrip = this.contextMenuStrip1;
tempBrowser.IsWebBrowserContextMenuEnabled = false;

但是很不幸,上面的代碼在有的機器上不起作用,開始以為是環境或者流氓插件的問題,折磨了很久無果,后來把.net升級到4.0竟然解決了這個問題,估計就是微軟webbrowser控件的問題

2.屏蔽拷貝快捷鍵和截屏快捷鍵

        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;
        }

3.解決webbrowser遇到window.open無法打開頁面的問題
是因為打開頁面的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,不知道有沒有朋友能知道為什么。

4.屏蔽webbrowser拖拽網頁內容到外部word等的問題
        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);
 }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 神马香蕉久久 | 人人草人人看 | 一区二区久久 | 色婷婷国产精品久久包臀 | 国产精品欧美综合 | 99精品国产99久久久久久97 | 久久51 | 国产精品久久久久久久久免费丝袜 | 国产主播一区 | 久久久人成影片一区二区三区 | 精品一区二区免费视频 | 国产精品亚欧美一区二区 | 精品一区二区三区日本 | 日本精品视频网站 | 久久久男人天堂 | 久久国产精品久久久久久 | 日韩不卡一二三 | 99国产视频 | 成人在线视频观看 | 青青草网 | 国产精品一区二区久久精品涩爱 | 日韩国产 | 久久亚洲一区二区三 | 国产高清视频在线观看 | 日本乱大交xxxxx | 国产精品视频一区二区噜噜 | 一级做a毛片 | 欧美成人一区二区 | 精品国产一区二区三区粉芽 | 久国久产久精永久网页 | 国产福利一区二区三区在线观看 | 精品成人av| 免费在线观看一级毛片 | 精品毛片在线 | 免费毛片在线播放 | 久久综合狠狠综合久久综合88 | wwwsihu| 狠狠狠色丁香婷婷综合久久五月 | 欧美成人精品h版在线观看 日韩激情影院 | 国产一区二区三区在线 | v888av成人 |