[C#]透過 SHDocVw 將 Internet Explorer 轉址

  • 15172
  • 0
  • 2010-08-03

[C#]透過 SHDocVw 將 Internet Explorer 轉址

 

一、問題描述

如何撰寫程式,讓 Internet Explorer 進行轉址?

註 : 本文用於回答 MSDN 論壇發問

http://social.msdn.microsoft.com/Forums/zh-TW/233/thread/ae461fa1-0257-402c-a3d0-30520c7cf1aa

 

二、方法

在此提供一種方式是使用 SHDocVw,請先將專案加入參考 Microsoft HTML Object Library 與 Microsoft Internet Controls

接著撰寫程式碼,功能是將 IE 網址為 http://tw.yahoo.com/ 轉址為 http://www.dotblogs.com.tw/chou/


        //using System.Runtime.InteropServices;
        //using System.IO;

        [DllImport("user32.dll")]
        private static extern IntPtr GetForegroundWindow();

        private void timer1_Tick(object sender, EventArgs e)
        {
            // 取得目前 Shell 的所有視窗
            SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindowsClass();
            object missing = Type.Missing;
            foreach (SHDocVw.InternetExplorer ie in shellWindows)
            {
                // 判斷視窗是否為 iexplore
                if (Path.GetFileNameWithoutExtension(ie.FullName).ToLower().Equals("iexplore"))
                {
                    // 判斷此 Internet Explorer 網址是否為 http://tw.yahoo.com/
                    if (ie.LocationURL == "http://tw.yahoo.com/")
                    {
                        // 修改網址為 http://www.dotblogs.com.tw/chou/
                        ie.Navigate("http://www.dotblogs.com.tw/chou/",
                          ref missing, ref missing, ref missing, ref missing);

                    }
                }
            }
        }

 

三、執行結果

 

範例下載 : [C#]透過 SHDocVw 將 Internet Explorer 轉址.rar

 

四、相關參考與連結

[C#]透過 SHDocVw 與 GetForegroundWindow 取得正在使用的 Internet Explorer 網址