4

やりたいこと: Google chromeから
現在のタブの html を取得したい やりたくないこと: 現在のタブのURLを取得し、それを使用して html を取得します。(私はすでにそれをしました) 現在のGoogle ChromeのURLからではなく、Google Chromeからhtmlを取得することが非常に重要です。 私が試したこと:

webClient.DownloadString



WebKit.NET

WebKit.NET を使用すると、 Google ChromeのようなURL に移動できます。
現在の Google Chrome ウィンドウに " connect" 挿入してから、現在のタブ ウィンドウに、現在のタブ ドキュメントをWebKit.DOM.Document.

私が使用した他のプロジェクトSHDocVw.ShellWindows(ShellWindows = サポートされているすべてのウィンドウ) では、SHDocVw を使用すると、現在のタブの現在の html を取得できますinternet explorer
例:

    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++を使用して),
現在のタブから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

それが必要な機能です。次に、2 番目の WINAPI を使用してスレッドに命令を送信しSendMessage、サイドから HTML を取得できます。タブ内の HTML フレームのクラス名を取得する必要があると思います。または、HTML フレームを取得するために再度呼び出す必要があるかもしれませんGetWindow。Google Chrom の構造はわかりませんが、spy++ を使用すると、そのクラス名を簡単に取得できると思います。

于 2013-05-27T22:28:13.947 に答える