从谷歌chrome当前标签获取当前html

本文关键字:获取 html 标签 谷歌 chrome | 更新日期: 2023-09-27 18:04:45

我想做的:
我想从 google chrome
获取当前标签的html我不想做的事情:
获取当前选项卡url,然后使用webClient.DownloadString获取html。(我已经做过了)

这是非常重要的,我得到的html从谷歌浏览器,而不是从当前的谷歌浏览器url。
我试过的:

WebKit.NET

WebKit。. NET让我导航到url 谷歌chrome。
我想"connect"进入当前谷歌浏览器窗口,然后进入当前选项卡窗口,插入当前选项卡文档到WebKit.DOM.Document

在其他项目中,我使用SHDocVw.ShellWindows (ShellWindows =所有支持的窗口),SHDocVw让我获得internet explorer当前选项卡的当前html。
例子:

    Dim shellWindows As New SHDocVw.ShellWindows
    For Each Ie As SHDocVw.InternetExplorer In shellWindows
            Dim htmlDoc As mshtml.HTMLDocument = Ie.Document
    Next


SHDocVw只适用于Internet Explorer

我怎么能浏览之间的chrome选项卡,然后插入html字符串列表?
我怀疑答案在WebKit.Interop.dll,但是我没有使用这个库的经验。

我相信有人有解决这个问题的办法,
选项卡窗口的类名是Chrome_RenderWidgetHostHWND(通过使用spy++),
我想我不能从当前标签Handle
得到html但也许我可以将句柄转换为WebKit.DOM.Document -但我更喜欢检查第一个选项。

对我来说,以正确的方式和最好的方式来完成这个项目是非常重要的。

从谷歌chrome当前标签获取当前html

我认为你必须使用WINAPI GetWindow。在那里,您可以传递类名并获得当前窗口/进程的处理程序。我不直接知道如果这工作,但所有标签在谷歌chrome运行在一个自己的线程,所以我认为这是可能的。

Declare Function GetWindow Lib "user32.dll" Alias "GetWindow" ( ByVal hwnd As Long, ByVal wCmd  As Long) As Long
Declare Function SendMessage Lib "user32.dll" Alias "SendMessage" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Keys, ByVal lParam As Integer) As Long

这就是你需要的功能。然后,您可以使用第二个WINAPI SendMessage向线程发送一条指令,并从侧面获取HTML。我认为你必须得到标签内的HTML框架的类名。或者你可能需要再次调用GetWindow来获取HTML框架我不知道Google chrome的结构但我认为使用spy++很容易获得类名