4

我想要做什么:
我想谷歌浏览器获取当前标签的 html
我不想做什么:
获取当前标签的url,然后webClient.DownloadString用来获取 html。(我已经这样做了)

从谷歌浏览器而不是从当前的谷歌浏览器网址获取 html 对我来说非常重要。
我试过的:

WebKit.NET

WebKit.NET 让我可以像谷歌浏览器一样导航到 url。
我想“ connect”进入当前的谷歌浏览器窗口,然后进入当前选项卡窗口,将当前选项卡文档插入到WebKit.DOM.Document.

在我使用的其他项目SHDocVw.ShellWindows(ShellWindows = 所有支持的窗口)上,SHDocVw 让我获取internet explorer.
例子:

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


SHDocVwInternet Explorer 适用于.

如何在 chrome 选项卡之间浏览,然后将 html 插入字符串列表?
我怀疑答案在于WebKit.Interop.dll,但我对这个库没有经验。

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

以正确的方式和最好的方式制作项目对我来说非常重要。

4

1 回答 1

0

我认为您必须使用 WINAPI GetWindow。在那里您可以传递类名并获取当前窗口/进程的处理程序。我不直接知道这是否可行,但 Google Chrom 中的所有选项卡都在自己的线程中运行,所以我认为这是可能的。

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 Chrom 的结构,但我认为使用 spy++ 很容易获得类名。

于 2013-05-27T22:28:13.947 回答