2013-03-19 77 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 ++可以很容易地获得该类的名称。

相关问题