我有一种情况,我想通过IE9附带的IHTMLDocument7接口使用一些方法。特别是getElementsByTagNameNS()方法,因为我想使用特定的标记类型(比解析整个文档要容易得多)。有没有办法使用TCppWebBrowser从C++ Builder(或Delphi)最新的IE9 MSHTML接口?
我当前的代码如下所示:
IHTMLDocument2* doc = NULL;
if (browser->ControlInterface->Document) // make sure TCppWebBrowser is OK
{
if (SUCCEEDED(browser->ControlInterface->Document->QueryInterface(IID_IHTMLDocument2, (void**)&doc)))
{
IHTMLElement* body;
HRESULT hr = doc->get_body(&body);
if (SUCCEEDED(hr))
{
WideString innerHtml;
body->get_innerHTML(&innerHtml);
txtInfo->Text = innerHtml;
body->Release();
}
doc->Release();
}
}
这工作,并可能有问题,但我最感兴趣的是得到我现在想要的功能。
如果我改变了代码,使用与IE9中的新界面:
browser->ControlInterface->Document->QueryInterface(IID_IHTMLDocument7, (void**)&doc)
我得到以下编译器错误:
[BCC32 Error] Unit2.cpp(134): E2451 Undefined symbol 'IID_IHTMLDocument7'
Full parser context
Unit2.cpp(129): parsing: void _fastcall TForm2::Button4Click(TObject *)
[BCC32 Error] Unit2.cpp(134): E2285 Could not find a match for 'IUnknown::QueryInterface(undefined,void * *)'
Full parser context
Unit2.cpp(129): parsing: void _fastcall TForm2::Button4Click(TObject *)
看来,它无法找到该界面匹配。
- 我应该怎么做才能使这个 接口可用?我猜 与BCB 一起发货的Windows SDK版本可能已过时,或不知道有关IE9 版本的MSHTML的类型库的 。
- 有没有办法来 做出相应的头文件 提供此接口 (IID_IHTMLDocument7),并保持 TCppWebBrowserControl?或者我需要 导入一个单独的ActiveX控件?
我在使用IE9的Windows 7(x64)上使用C++ Builder Starter XE(15.0.3953.35171)。
VC库都不可用,因为,在BCB开始。 – 2011-05-24 09:15:23