我正在做一个项目,我需要获取浏览器中所有打开的选项卡的 URL(例如 Google Chrome、IE、Firefox、...)
有没有办法使用 c# 或 vb.net 来做到这一点?
ps它是一个windows窗体应用程序
我正在做一个项目,我需要获取浏览器中所有打开的选项卡的 URL(例如 Google Chrome、IE、Firefox、...)
有没有办法使用 c# 或 vb.net 来做到这一点?
ps它是一个windows窗体应用程序
IE:
Dim browser As SHDocVw.InternetExplorer
Dim myLocalLink As String
Dim myDoc As mshtml.IHTMLDocument2
Dim shellWindows As SHDocVw.ShellWindows = New SHDocVw.ShellWindows()
Dim filename As String
For Each ie As SHDocVw.InternetExplorer In shellWindows
filename = System.IO.Path.GetFileNameWithoutExtension(ie.FullName).ToLower()
If filename = "iexplore" Then
browser = ie
myDoc = browser.Document
myLocalLink = myDoc.url
MessageBox.Show(myLocalLink)
End If
Next
C#:
SHDocVw.InternetExplorer browser;
string myLocalLink;
mshtml.IHTMLDocument2 myDoc;
SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindows();
string filename;
foreach (SHDocVw.InternetExplorer ie in shellWindows)
{
filename = System.IO.Path.GetFileNameWithoutExtension(ie.FullName).ToLower();
if ((filename == "iexplore"))
{
browser = ie;
myDoc = browser.Document;
myLocalLink = myDoc.url;
MessageBox.Show(myLocalLink);
}
你需要:
microsoft.mshtml
和
shdocvw.dll
火狐c#:
using NDde.Client;
DdeClient dde = new DdeClient("Firefox", "WWW_GetWindowInfo");
dde.Connect();
string url = dde.Request("URL", int.MaxValue);
dde.Disconnect();
MessageBox.Show(url);
下载 NDde.2.01.0563 (NDde.dll)
我也对 Chrome 做过:
VB.net:
共享功能:
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function FindWindow( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As IntPtr
End Function
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function FindWindowEx(ByVal parentHandle As IntPtr, _
ByVal childAfter As IntPtr, _
ByVal lclassName As String, _
ByVal windowTitle As String) As IntPtr
End Function
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
End Function
Dim h As IntPtr
For Each p As Process In Process.GetProcessesByName("chrome")
h = FindWindow("Chrome_WidgetWin_1", p.MainWindowTitle)
Exit For
Next
Dim urlH As IntPtr
urlH = FindWindowEx(h, 0, "Chrome_OmniboxView", Nothing)
Dim urlHH As IntPtr = Marshal.AllocHGlobal(100)
Dim NumText As Integer = SendMessage(urlH, &HD, 50, urlHH)
Dim url As String = Marshal.PtrToStringUni(urlHH)
MsgBox(url)