" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在C#中 webbrowser的使用心得

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

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

但是很不幸,上面的代碼在有的機(jī)器上不起作用,開始以為是環(huán)境或者插件的問題,折磨了很久無果,后來把.net升級(jí)到4.0竟然解決了這個(gè)問題,估計(jì)就是微軟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("當(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無法打開頁(yè)面的問題
是因?yàn)榇蜷_頁(yè)面的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("&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。但是后來發(fā)現(xiàn)系統(tǒng)執(zhí)行過這個(gè)過程之后,webbrowser的url會(huì)變成原來的url,不知道有沒有朋友能知道為什么。

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

相關(guān)文章

  • C# 抓圖服務(wù)的實(shí)現(xiàn)

    C# 抓圖服務(wù)的實(shí)現(xiàn)

    這篇文章主要介紹了C# 抓圖服務(wù)的實(shí)現(xiàn),幫助大家更好的利用c#處理窗口,進(jìn)行截圖,感興趣的朋友可以了解下
    2021-01-01
  • C#零基礎(chǔ)開發(fā)中最重要的概念總結(jié)

    C#零基礎(chǔ)開發(fā)中最重要的概念總結(jié)

    這篇文章主要為大家詳細(xì)介紹了C#零基礎(chǔ)開發(fā)中最重要的一些概念,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,需要的可以參考一下
    2023-02-02
  • C#中的==運(yùn)算符用法講解

    C#中的==運(yùn)算符用法講解

    本文詳細(xì)講解了C#中的==運(yùn)算符的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • Unity實(shí)現(xiàn)物體弧線運(yùn)動(dòng)到規(guī)定的坐標(biāo)

    Unity實(shí)現(xiàn)物體弧線運(yùn)動(dòng)到規(guī)定的坐標(biāo)

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)物體以弧線的形式運(yùn)動(dòng)到規(guī)定的坐標(biāo),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • 深入理解C#的數(shù)組

    深入理解C#的數(shù)組

    本篇文章主要介紹了C#的數(shù)組,數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),詳細(xì)的介紹了數(shù)組的聲明和訪問等,有興趣的可以了解一下。
    2016-11-11
  • C#獲取本機(jī)IP地址(ipv4)

    C#獲取本機(jī)IP地址(ipv4)

    本文主要介紹了C#獲取本機(jī)所有IP地址的方法、C#獲取本機(jī)IP地址(ipv4)的方法等。具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-03-03
  • Unity實(shí)現(xiàn)旋轉(zhuǎn)扭曲圖像特效

    Unity實(shí)現(xiàn)旋轉(zhuǎn)扭曲圖像特效

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)旋轉(zhuǎn)扭曲圖像特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • Unity3D動(dòng)態(tài)生成平面網(wǎng)格

    Unity3D動(dòng)態(tài)生成平面網(wǎng)格

    這篇文章主要為大家詳細(xì)介紹了Unity3D動(dòng)態(tài)生成平面網(wǎng)格,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • 利用WinForm實(shí)現(xiàn)上左右布局的方法詳解

    利用WinForm實(shí)現(xiàn)上左右布局的方法詳解

    現(xiàn)在90%的管理系統(tǒng)都是在用上左右這種布局方式,真可謂是經(jīng)典永流傳。本文將利用WinForm實(shí)現(xiàn)上左右布局這一布局效果,感興趣的可以學(xué)習(xí)一下
    2022-09-09
  • C#實(shí)現(xiàn)設(shè)置或屏蔽熱鍵的方法詳解

    C#實(shí)現(xiàn)設(shè)置或屏蔽熱鍵的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)設(shè)置或屏蔽熱鍵,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12

最新評(píng)論

饶河县| 新乡县| 宁波市| 邯郸市| 东莞市| 县级市| 奉节县| 仪陇县| 七台河市| 兖州市| 山阳县| 舒兰市| 三门县| 牡丹江市| 靖宇县| 长白| 赤水市| 南丹县| 长寿区| 十堰市| 友谊县| 临潭县| 海丰县| 阿尔山市| 庄浪县| 长沙市| 巴林右旗| 亚东县| 牡丹江市| 襄汾县| 攀枝花市| 江北区| 闻喜县| 四会市| 唐海县| 巩义市| 镇巴县| 苏尼特右旗| 洞头县| 嘉鱼县| 乐都县|