" />

亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

在C#中 webbrowser的使用心得

 更新時(shí)間:2013年04月12日 17:25:03   投稿:jingxian  
最近用webbrowser做了個(gè)東西,期間有點(diǎn)小曲折,而且網(wǎng)上的解決方法也基本都是淺嘗輒止,特此在這里發(fā)一下同大家分享。

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

但是很不幸,上面的代碼在有的機(jī)器上不起作用,開始以為是環(huán)境或者插件的問(wèn)題,折磨了很久無(wú)果,后來(lái)把.net升級(jí)到4.0竟然解決了這個(gè)問(wèn)題,估計(jì)就是微軟webbrowser控件的問(wèn)題

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("當(dāng)前系統(tǒng)禁止內(nèi)容復(fù)制,如需系統(tǒng)內(nèi)部復(fù)制粘貼,請(qǐng)使用右鍵菜單的功能!", "屏蔽");
                        Clipboard.SetDataObject("null");
                        return true;
                    }
                }
            }

            return false;
        }

3.解決webbrowser遇到window.open無(wú)法打開頁(yè)面的問(wèn)題
是因?yàn)榇蜷_頁(yè)面的url一般是通過(guò)myBrowser.StatusText來(lái)獲取的,但是window.open是無(wú)法獲取真正的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("&amp;", "&");
                }
            }
            NewURL = string.IsNullOrEmpty(NewURL) ? myBrowser.StatusText : NewURL;


很遺憾這種方法只能適合一頁(yè)中只有一個(gè)window.open的情況,如果有多個(gè)window.open,我們可以用下面的方法:在webbrowser的DocumentCompleted中,if (mybrowser.DocumentText.IndexOf("window.open(") > -1),然后把所有window.open替換為window.location.href。但是后來(lái)發(fā)現(xiàn)系統(tǒng)執(zhí)行過(guò)這個(gè)過(guò)程之后,webbrowser的url會(huì)變成原來(lái)的url,不知道有沒(méi)有朋友能知道為什么。

4.屏蔽webbrowser拖拽網(wǎng)頁(yè)內(nèi)容到外部word等的問(wèn)題
        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);
 }

  • C#反射調(diào)用拓展類方法實(shí)例代碼

    C#反射調(diào)用拓展類方法實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于C#反射調(diào)用拓展類方法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-01-01
  • c# 實(shí)例——繪制波浪線(附源碼)

    c# 實(shí)例——繪制波浪線(附源碼)

    這篇文章主要介紹了c#如何繪制波浪線,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • C#中ToString數(shù)據(jù)類型格式大全(千分符)

    C#中ToString數(shù)據(jù)類型格式大全(千分符)

    這篇文章主要介紹了C#中ToString數(shù)據(jù)類型格式大全 千分符,需要的朋友可以參考下
    2017-02-02
  • C#使用Monitor類實(shí)現(xiàn)線程同步

    C#使用Monitor類實(shí)現(xiàn)線程同步

    這篇文章介紹了C#使用Monitor類實(shí)現(xiàn)線程同步的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C#對(duì)稱加密與非對(duì)稱加密實(shí)例

    C#對(duì)稱加密與非對(duì)稱加密實(shí)例

    這篇文章主要介紹了C#對(duì)稱加密與非對(duì)稱加密實(shí)例,詳細(xì)分析了對(duì)稱加密與非對(duì)稱加密的原理與具體實(shí)現(xiàn)方法,具有一定的實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • 詳解c# 強(qiáng)制轉(zhuǎn)換和類型轉(zhuǎn)換

    詳解c# 強(qiáng)制轉(zhuǎn)換和類型轉(zhuǎn)換

    這篇文章主要介紹了c# 強(qiáng)制轉(zhuǎn)換和類型轉(zhuǎn)換的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c#,感興趣的朋友可以了解下
    2020-10-10
  • C#繼承IList?接口的實(shí)現(xiàn)步驟

    C#繼承IList?接口的實(shí)現(xiàn)步驟

    C#中的IList<T>接口是.NET框架中的一種通用接口,它定義了一組在運(yùn)行時(shí)可以使用類型參數(shù)T的元素的集合,本文給大家介紹了C#繼承IList?接口的設(shè)計(jì)方法,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • C#中的異常處理問(wèn)題try catch finally

    C#中的異常處理問(wèn)題try catch finally

    這篇文章主要介紹了C#中的異常處理問(wèn)題try catch finally,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • C#獲取指定目錄最后寫入時(shí)間的方法

    C#獲取指定目錄最后寫入時(shí)間的方法

    這篇文章主要介紹了C#獲取指定目錄最后寫入時(shí)間的方法,涉及C#中LastWriteTime屬性的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • 最新評(píng)論