none
winform下如何获取ie当前打开的标签页地址 RRS feed

  • 问题

  • 一开始根据SHDocVw.ShellWindows取得所有窗口,再判断此窗口是否为正在使用的ie,功能虽实现了,但发现ie7下使用多标签就不行了,得到的是整个浏览器所有标签的网址,代码如下:

     

    C# code
    // 取得所有窗口 SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindowsClass(); foreach (SHDocVw.InternetExplorer ie in shellWindows) { // 判断窗口是否为 iexplore if (Path.GetFileNameWithoutExtension(ie.FullName).ToLower().Equals("iexplore")) { // 判断此 Internet Explorer 是否为正在使用的窗口 if (ie.HWND == GetForegroundWindow().ToInt32()) { label1.Text = ie.HWND.ToString(); } } }

     

    这段代码只有在浏览器只打开一个标签才有意义,我想实现的效果是不论打开了多少标签,总能获得当前活动标签的网址。
    另一种方法是得到当前标签的句柄,怎么通过这个句柄得到地址栏的网址?


    2011年4月15日 16:00

答案

  • 这有2个链接,还有一个例子,借你参考下:

    http://social.msdn.microsoft.com/Forums/en-IE/wpf/thread/7be1e51d-6b78-41aa-a4a0-e4f20bdaafd5

    http://social.msdn.microsoft.com/Forums/en-US/ieextensiondevelopment/thread/03a8c835-e9e4-405b-8345-6c3d36bc8941

    不过都是英文的,希望你喜欢。

    2011年4月28日 3:36

全部回复

  • 自己顶上去,高手能否告知一下……
    2011年4月16日 5:58
  • 看看先,等下回。
    2011年4月18日 9:55
  • Hi,

    我有一种方法可以实现。

    代码先贴上:

                    SHDocVw.ShellWindows shellWindows = new ShellWindows();

     

                foreach (SHDocVw.InternetExplorer ie in shellWindows)

                {

     

                    // 判斷視窗是否為 iexplore

     

                    if (Path.GetFileNameWithoutExtension(ie.FullName).ToLower().Equals("iexplore"))

                    {

     

                        mshtml.HTMLDocument hd = ie.Document as mshtml.HTMLDocument;

                        mshtml.IHTMLElement he = hd.activeElement;

                        textBox1.Text += he.outerHTML;

                        //if (ie.Visible == true)

                        //{

                        //    textBox1.Text += hd.documentElement.outerHTML;

                        //}

                    }

                }

    经过测试,是可以的。注释掉的那种方法,效率太低。虽然说结果一致。

     


    Best Regards,
    Rocky Yue[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年4月19日 3:41
    版主
  • 感谢版主Rocky Yue的回复,测试了一下,发现在ie9下获取到的还是所有标签的源码,而不是当前活动标签的

    2011年4月19日 8:32
  • dear
    参考以下连结是否为你所需功能
    http://www.dotblogs.com.tw/yc421206/archive/2011/04/11/22443.aspx
    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2011年4月19日 9:14
  • 感谢余小章,但我需要的功能是通过winform程序,获得当前浏览器活动标签页的网址,我现在实现的功能是可以获得当前浏览器所有标签页的网址信息,但无法判断哪个标签页才是用户正在浏览器,我是想获得当前用户浏览的网址信息
    2011年4月19日 10:26
  • 这个还真不好实现,期待更好的解决方案,貌似那些属性都是进程级的,不能识别当前标签的级别?

    或者MS该更新那个dll了。

    期待。。。

    2011年4月20日 5:13
  • 你这个问题解决了吗,我有正好有这个需求,可以讲一下思路吗,给段示例代码

    我很庆幸能做自己喜欢做的事……

    2012年4月22日 13:33