如何在 VB.net 中获取浏览器中活动选项卡的 URL

How to get URL of active tab in browser in VB.net

我正在对应用程序进行编码,以在 Chrome 浏览器中 捕获 URL 活动选项卡 。我检查了一些代码,所有这些代码导致 GUI 冻结并需要很长时间才能获得 URL。我真正想要的是获得活动选项卡的 URL 。就是这样。这就是我用过的。非常感谢您的帮助。

Imports System.Windows.Automation

Public Class Form1
    Private Const ChromeProcess As [String] = "chrome"
    Private Const AddressCtl As [String] = "Address and search bar"
Public Function GetChromeActiveWindowUrl() As [String]
    Dim procs = Process.GetProcessesByName(ChromeProcess)

    If (procs.Length = 0) Then
        Return [String].Empty
    End If

    Return procs _
.Where(Function(p) p.MainWindowHandle <> IntPtr.Zero) _
.Select(Function(s) GetUrlControl(s)) _
.Where(Function(p) p IsNot Nothing) _
.Select(Function(s) GetValuePattern(s)) _
.Where(Function(p) p.Item2.Length > 0) _
.Select(Function(s) GetValuePatternUrl(s)) _
.FirstOrDefault

End Function

Private Function GetUrlControl(
proses As Process) _
As AutomationElement

    Dim propCondition =
    New PropertyCondition(
    AutomationElement.NameProperty,
    AddressCtl)
    Return AutomationElement _
    .FromHandle(proses.MainWindowHandle) _
    .FindFirst(
        TreeScope.Descendants,
        propCondition)

End Function

Private Function GetValuePatternUrl(
element As Tuple(Of
AutomationElement, AutomationPattern())) As [String]

    Dim ap = element.Item2(0)
    Dim ovp = element.Item1.GetCurrentPattern(ap)
    Dim vp = CType(ovp, ValuePattern)

    Return vp.Current.Value
End Function



Private Function GetValuePattern(
element As AutomationElement) _

作为元组(的 自动化元素, AutomationPattern())

      Return New Tuple(Of
      AutomationElement,
      AutomationPattern())(
      element,
      element.GetSupportedPatterns())
End Function

终于找到了我的问题的答案,

我已经阻止了从其他应用程序接收的请求,只关注 chrome 浏览器

Dim hWnd As IntPtr = GetForegroundWindow()
Dim ProcessID As UInt32 = Nothing
GetWindowThreadProcessId(hWnd, ProcessID)
Dim Proc As Process = Process.GetProcessById(ProcessID)
str_application_category = Proc.MainModule.FileVersionInfo.ProductName

If str_application_category = "Google Chrome" Then
str_application_path = GetChromeActiveWindowUrl()
End If

Catch ex As Exception

End Try