如何在 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
我正在对应用程序进行编码,以在 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