2013-03-19 93 views
4

當前的HTML我想要做什麼:
我想從谷歌瀏覽器獲取當前選項卡的HTML
什麼,我不想做的事:
獲取當前標籤url,然後使用webClient.DownloadString獲取html。 (我已經做到了)

從我的谷歌瀏覽器中獲取html而不是從當前的谷歌瀏覽器網址獲取html是非常重要的。
我曾嘗試:
獲得來自谷歌瀏覽器當前標籤

WebKit.NET 

WebKit.NET讓我導航到URL 谷歌瀏覽器。
我想將「connect」放入當前的google chrome窗口,然後進入當前標籤窗口,將當前標籤文檔插入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

如何瀏覽鉻選項卡然後將html插入到字符串列表中?
我懷疑答案在於WebKit.Interop.dll,但我沒有這個庫的經驗。

我相信有人有辦法解決這個問題,
選項卡窗口的類名是Chrome_RenderWidgetHostHWND(通過使用間諜++),
我覺得我不能從當前選項卡Handle獲得HTML,
但也許我可以將句柄轉換爲WebKit.DOM.Document - 但我更願意檢查第一個選項。

對我來說,以正確的方式和最好的方式進行項目是非常重要的。

+0

你有沒有找到答案? – 2015-01-19 23:32:58

回答

0

我認爲你必須使用WINAPI GetWindow。在那裏你可以傳遞類名並獲得當前窗口/進程的處理程序。我不直接知道這項工作,但谷歌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 ++可以很容易地獲得該類的名稱。