使用 VB.NET 获取当前浏览器 URL
获取浏览器 URL
引言
本文档解释了如何使用 VB.NET 获取浏览器中的当前 URL。演示程序展示了如何在 Windows Internet Explorer 和 Google Chrome 中实现此功能。
背景
为了我的一个 VB.NET 程序,我希望能够获取当前浏览器的 URL;当然,我可以复制粘贴,但如果程序能够自动获取,那就更好了。因此,我在互联网上搜索,找到了许多“解决方案”,但它们要么是用 C 编写的,要么对我来说根本不起作用(至少对我而言)。在阅读了各种论坛后,我决定调整其中一个解决方案,并成功地从 Internet Explorer 和 Chrome 中获取了 URL;尝试从 Firefox 中获取 URL 却未能成功。
我的开发配置是:Microsoft Visual Basic 2008 Express,Windows7 Home Premium 64 位,IE9,Chrome 11.0.696.68,Firefox 4。该代码也已在 Vista 32 位上进行了测试。代码中引用了基本思想和论坛建议。
代码位于 CurrentUrl.vb 模块中,您可以将其添加到您的项目中。在您的代码中,您应该首先验证浏览器(Internet Explorer 或 Chrome)是否可用。
例如
...
Dim appName As String = "iexplore"
Dim proc As System.Diagnostics.Process = GetBrowser(appName)
...
Private Function GetBrowser(ByVal appName) As System.Diagnostics.Process
Dim pList() As System.Diagnostics.Process =
System.Diagnostics.Process.GetProcessesByName(appName)
For Each proc As System.Diagnostics.Process In pList
If proc.ProcessName = appName Then
Return proc
End If
Next
Return Nothing
End Function
...
如果返回了浏览器进程,请使用以下参数调用 CurrentUrl.vb 中的 GetCurrentUrl
函数
- 浏览器窗口句柄:
proc.MainWindowHandle
- 浏览器名称:“Windows Internet Explorer”或“Google Chrome”
- 要查找的窗口的类名:“
Edit
”用于 IE,“Chrome_AutocompleteEditView
”用于 Chrome - (可选) 一个
combobox
来获取浏览器窗口的“treeview
”,直到目标窗口;如果不需要,则传递Nothing
...
If proc IsNot Nothing Then
Dim browserName as string = "Windows Internet Explorer"
Dim className as String = "Edit"
Dim s As String =
GetCurrentUrl(proc.MainWindowHandle, browserName, className, ComboBox1)
If s <> "" Then
TextBox1.Text = s
ComboBox1.SelectedIndex = 0 'Window list
Else
Label1.Text = "Current URL is not available"
End If
Else
Label1.Text = browserName & " is not available"
end If
...
在 CurrentUrl.vb 内部
该模块包含一个简单的概述、基于其构建的来源的引用,以及所需的 Windows 函数和常量的定义,以及一些 private
变量。
GetCurrentUrl
是唯一的 public
函数;它调用 private
EnumWindows
函数来获取窗口句柄,直到找到浏览器窗口,然后查找包含 URL 的子窗口。URL string
将返回到您的程序。
关注点
在引用的来源中,目标窗口的搜索从顶级窗口(Intptr.Zero
)开始,并返回一个 URL 列表。我的方法从浏览器窗口(proc.MainWindowHandle
)开始;我使用了 GetBrowser
并调试了 CurrentUrl
,直到找到具有适当类名的目标窗口,以获取单个 URL。不幸的是,这对于 Firefox 不起作用,它需要完全不同的方法来获取窗口句柄(请参阅 Firefox Access)。
历史
- 2011 年 5 月 - 首次发布
- 2011 年 6 月 - 源代码已更新,启用 Option Strict On