在没有BHO的情况下以编程方式确定IE窗口当前URL

时间:2011-03-10 06:55:08

标签: c# internet-explorer firefox interprocess

有人可以指导我如何在没有BHO的情况下以编程方式确定IE的当前URL吗?

我能够想到完成这种功能的唯一方法是查看窗口的标题,而不是URL,但这看起来很糟糕。

另一方面,我假设存储URL的文本框将有一个句柄,我附加并读取文本。我在这个假设中是否正确?

任何指导都将不胜感激。

PS:如果您可以提供可与Firefox一起使用的示例/指南,则可获得奖励积分。

编辑:好的,所以进一步的研究开始发现我需要看的是GetWindowText和消息WM_GETTEXT。如果我得到这一切,那么所有问题都将在答案后发布。

1 个答案:

答案 0 :(得分:0)

所以这是一篇非常老的帖子,但我偶然发现它,所以我想尝试回答它,因为我刚刚学会了这个:)

您可以使用the Windows Shell执行此操作。您可以遍历打开的窗口并查找任何“HTTPDocumentClass”对象(这些是Internet Explorer窗口),然后您可以访问.LocationUrl成员以查找URL。

我不知道如何在C#中编写示例,但这是你在VB中的表现 注意:您需要添加对 Microsoft Shell控件和自动化 Microsoft Internet Controls 的引用。

Imports Shell32
Imports SHDocVw

Public Function GetIExplorerURL() As String()
    Dim exShell As New Shell32.Shell
    Dim URLs As New List(Of String)
    For Each window As SHDocVw.ShellBrowserWindow In DirectCast(exShell.Windows, SHDocVw.IShellWindows)
        If TypeName(window.Document) = "HTMLDocumentClass" Then
            URLs.Add(window.LocationURL)
        End If
    Next

    Return URLs.ToArray
End Function
相关问题