C#監聽IE文檔加載完成、彈窗、JS彈窗、頁面跳轉

          C#監聽IE文檔加載完成、彈窗、JS彈窗、頁面跳轉
          這個Demo在早段時間有個網友需要做一個相關方面的軟件,我給做出來的。很方面,在JS彈窗監聽上耗了不少時間?,F在均已解決!請勿用作非法商業用途,該軟件產生的后果與作者本人無關,特此聲明。
          由于需要對HTML等對象進行操作,所以需要引用:
          [code lang=”csharp”]using mshtml;
          using SHDocVw;
          [/code]
          以下是事件綁定和處理的代碼:
          [code lang=”csharp”]static ShellWindows shellWindows;
          static void Main(string[] args)
          {
          if (shellWindows == null)
          {
          shellWindows = new ShellWindows();
          }
          shellWindows.WindowRegistered += new DShellWindowsEvents_WindowRegisteredEventHandler(Register);
          Console.WriteLine("正在監聽IE…");
          Console.ReadKey();
          }

          static void Register(int ICookie)
          {
          for (int i = shellWindows.Count – 1; i >= 0; i–)
          {
          InternetExplorer ie = shellWindows.Item(i) as InternetExplorer;
          string filename = Path.GetFileNameWithoutExtension(ie.FullName).ToLower();
          if (filename.Equals("iexplore"))
          {
          string strUrl = ie.LocationURL;//IE8 url為打開IE的實際路徑 但是IE7這里是""只能在
          //ie.NavigateComplete2 += new DWebBrowserEvents2_NavigateComplete2EventHandler(BeforeNavigate); break;//因為最后一個一定是最新創建的(自己測試后的結論)注意這里我是從后面遍歷的找到最新創建的就退出循環 保證只處理新創建的IE 保證每個實例在這里只遍歷一次
          ie.NewWindow2 += new DWebBrowserEvents2_NewWindow2EventHandler(ie_NewWindow2);
          ie.BeforeNavigate2 += new DWebBrowserEvents2_BeforeNavigate2EventHandler(ie_BeforeNavigate2);
          ie.DocumentComplete += new DWebBrowserEvents2_DocumentCompleteEventHandler(ie_DocumentComplete); break;
          }
          }
          }

          static void ie_BeforeNavigate2(object pDisp, ref object URL, ref object Flags, ref object TargetFrameName, ref object PostData, ref object Headers, ref bool Cancel)
          {
          if (URL.ToString().Contains("baidu"))
          {
          Console.WriteLine("跳轉:" + URL.ToString());
          Cancel = true;
          object missing = Type.Missing;
          ((WebBrowser)pDisp).Navigate("//www.solariosolutions.com", ref missing, ref missing, ref missing, ref missing);
          }
          }

          static WebBrowser wb = new WebBrowser();
          static void ie_NewWindow2(ref object ppDisp, ref bool Cancel)
          {
          ppDisp = wb;
          Console.WriteLine("新開頁面");
          if (wb.LocationURL.ToString().Contains("baidu"))
          {
          Cancel = true;
          object missing = Type.Missing;
          wb.Navigate("//www.solariosolutions.com", ref missing, ref missing, ref missing, ref missing);
          }
          }

          static void ie_DocumentComplete(object pDisp, ref object URL)
          {
          HTMLDocument doc = (HTMLDocument)((WebBrowser)pDisp).Document;

          Console.WriteLine("完成加載:" + doc.title + "(" + URL.ToString() + ")");
          }[/code]

          本博客所有文章如無特別注明均為原創

          如果覺得對你有幫助,可以通過下方打賞對作者表示鼓勵

          本文采用知識共享署名-非商業性使用-相同方式共享

          如若轉載,請注明出處:《C#監聽IE文檔加載完成、彈窗、JS彈窗、頁面跳轉》http://www.solariosolutions.com/1062.html

          (3)
          打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
          鋒哥的頭像鋒哥管理員
          上一篇 2015年1月16日 09:49
          下一篇 2015年8月15日 23:07

          相關推薦

          發表回復

          登錄后才能評論
          国产厨房乱子伦露脸,XXXXAAA欧美,日本 888 XXXX,国产欧美日韩一区二区图片