0

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

我能够想到完成这种功能的唯一方法是查看窗口的标题而不是 URL,但这似乎很棘手。

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

任何指导将不胜感激。

PS:如果您可以提供适用于 Firefox 的示例/指导,则可以加分。

编辑:好的,所以进一步的研究开始发现我需要查看的是 GetWindowText 和消息 WM_GETTEXT。如果我解决了这一切,将发布答案。

4

1 回答 1

0

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

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

我不知道如何用 C# 编写示例,但这是你在 VB 中的做法。
注意:您需要添加对Microsoft Shell Controls and AutomationMicrosoft 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
于 2015-06-25T20:51:07.197 回答