none
請問一個有關於IE的問題.... RRS feed

  • 一般討論

  • 請問VB究竟有什麼函數可以抓取IE上面的網址呢??

    或是這類程式可以怎麼撰寫??

    我該朝哪一方面研究呢??

    多謝高手們的回應阿!!

    **補充***更明確的表示我的問題

    我現在是需要了解我運用vb.net撰寫出一程式,而該程式必須要能夠去抓取現在所執行的ie裡面的網址,然而,就是這點一直困擾我很久,我一直不曉得該如何做,這是我做的一點補充,謝謝各位高手的解答喔!
    懇請各位高手回答

    2006年7月15日 下午 07:07

解答

  • 我是用C#寫的, 我想轉成VB.NET也不會差很多

    在編譯執行下面的code之後, 記得先從COM加入兩個參考:Microsoft HTML Object Library 與 Microsoft Internet Controls

    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace Test
    {
        class Program
        {
            static void Main(string[] args)
            {
                Program.GetURLfromIE();
            }

            public static void GetURLfromIE()
            {
              
                SHDocVw.ShellWindowsClass SW = new SHDocVw.ShellWindowsClass();
                foreach (SHDocVw.InternetExplorer IE in SW)
                {   
                    if (IE.FullName.ToUpper().IndexOf("IEXPLORE.EXE") > 0)
                    {                    
                        {           
                            Console.WriteLine(IE.LocationURL );
                        }
                    }
                }
               

            }
        }
    }


     


    2006年7月16日 上午 03:41

所有回覆

  • 可透過Page.Request.Url.ToString()得知網址、或者是Page.Request.RawUrl.ToString()兩者差異如下~

    如網址是http://forums.microsoft.com/MSDN-CHT/AddPost.aspx

    透過Page.Request.Url可得知:http://forums.microsoft.com/MSDN-CHT/AddPost.aspx

    透過Page.Request.RawUrl可得知:/MSDN-CHT/AddPost.aspx

     

    2006年7月16日 上午 02:42
  • 我是用C#寫的, 我想轉成VB.NET也不會差很多

    在編譯執行下面的code之後, 記得先從COM加入兩個參考:Microsoft HTML Object Library 與 Microsoft Internet Controls

    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace Test
    {
        class Program
        {
            static void Main(string[] args)
            {
                Program.GetURLfromIE();
            }

            public static void GetURLfromIE()
            {
              
                SHDocVw.ShellWindowsClass SW = new SHDocVw.ShellWindowsClass();
                foreach (SHDocVw.InternetExplorer IE in SW)
                {   
                    if (IE.FullName.ToUpper().IndexOf("IEXPLORE.EXE") > 0)
                    {                    
                        {           
                            Console.WriteLine(IE.LocationURL );
                        }
                    }
                }
               

            }
        }
    }


     


    2006年7月16日 上午 03:41
  • 你要明確的說明你是在什麼情況下要得知 IE 網址。

    例如:

    1. ASP.NET 的 Server 端,除小安的方式,也可以使用 Request.ServerVariables 得到。

    2. Windows 下,除了程式自己用 Automation 來建立 IE 物件外,大部分情況都是類似測錄程式想要紀錄使用者的動作。這種必須使用 Windows API 來處理,目前沒看到 .Net framework 有包。

    a1. 通常用 EnumWindow 來過濾標題有 Microsoft Internet Explorer 的母視窗,不過數量過多,不好處理,可能會用 a2. 方式快速找到母視窗。

    a2. 或可用 Dim arrProcess As Process() = System.Diagnostics.Process.GetProcessesByName("iexplore") 來取得所有的 IE 程序,再取得 ThreadId ,用 EnumThreadWindows 取得 IE 主視窗 hWnd

    b. 從 IE 主視窗 hWnd 用 EnumChildWindows 取得第一個子視窗 hWnd (ClassName = WorkerW)

    c. 從子視窗 hWnd 用 EnumChildWindows 取得第二個子視窗 hWnd (ClassName = ComboBoxEx32)

    d. 對子視窗 hWnd (ClassName = ComboBoxEx32) 使用 SendMessage(hWnd, WN_GetText, ...) 取得網址即可。

    註:使用 GetWindowText 可能無法取得共用物件的文字框,建議你用 SendMessange

    關於視窗的 hWnd 架構,你可以使用 Spy++ 來觀看與瀏覽,在 VS2005 安裝路徑如下:

    C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\spyxx.exe

    2006年7月16日 上午 05:11
    版主
  • 謝謝您的解答,只是下面的指令我轉成VB.NET不太成功

    可以跟我說明一下再C#的意思是怎樣嗎??

    拜託囉

    SHDocVw.ShellWindowsClass SW = new SHDocVw.ShellWindowsClass();
                foreach (SHDocVw.InternetExplorer IE in SW)

    2006年7月16日 下午 09:43
  • ForEach 是 .Net framework 2.0 新加的,可以用 For Each 取代。

     Public Sub GetURLfromIE()
      Dim sw As New SHDocVw.ShellWindows
      Dim ie As Object
      For Each ie In sw
       If ie.FullName.ToUpper().IndexOf("IEXPLORE.EXE") > 0 Then
        Debug.WriteLine(ie.LocationURL)
       End If
      Next
     End Sub

    2006年7月17日 上午 04:07
    版主
  • 剛剛把它包裝成不需要在 .Net 專案加入參照程式庫的函數:

    http://tlcheng.twbbs.org/TLCheng/Net/NetList.aspx?Action=Function&Module=34&Function=248

    2006年7月17日 上午 07:22
    版主