CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2> pDoc;
CComQIPtr<IHTMLElementCollection, &IID_IHTMLElementCollection> pColl;
CComQIPtr<IDispatch, &IID_IDispatch> pTmpDisp;
CComQIPtr<IHTMLInputElement, &IID_IHTMLInputElement> pElement;
CComQIPtr<IDispatch, &IID_IDispatch> pDisp;
if ( SUCCEEDED (CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2, (LPVOID*)&pDoc))) {
if ( SUCCEEDED (pDoc->get_all(&pColl))) {
if ( SUCCEEDED (pColl->item(TVariant(WideString(Name)), TVariant(0), &pDisp))) {
pElement = pDisp;
pElement->put_value(WideString(Data));
}
}
}
Заполнение форм cppWebBrowser
В с++ Builder 2007 этот код нормально работал, в Rad Studio xe2
Отказывается пишет ошибку:
[BCC32 Fatal Error] atlbase.h(5): F1003 Error directive: You must copy ATL files from an earlier version of BDS [$(BDS)\include\atl\*.*] to use ATL
код:
подгружал вот эту директиву: #include <atl/atlbase.h>
#include <mshtml.h>
Код:
Кому интересно вышел из положения так:
Скопировал файлы из BCB6 в Rad Studio XE2 следующий каталог:
C:\Program Files\Embarcadero\RAD Studio\9.0\include\windows\sdk\atl\atlbase.h
C:\Program Files\Embarcadero\RAD Studio\9.0\include\windows\sdk\atl\atldef.h
C:\Program Files\Embarcadero\RAD Studio\9.0\include\windows\sdk\atl\atliface.h
C:\Program Files\Embarcadero\RAD Studio\9.0\include\windows\sdk\atl\atlconv.h
C:\Program Files\Embarcadero\RAD Studio\9.0\lib\win32\release\bcbatl.lib
И все заработало
<div class="button_center_small" style="width: 50px"><span style="font-weight:normal">Find</span></div>
<span style="font-weight:normal">Find</span>
Код:
if( CppWebBrowser1->Document ) {
TComInterface<IHTMLDocument2> pDocument;
CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2, (LPVOID*)&pDocument);
if( pDocument ) {
TComInterface<IHTMLElementCollection> pCollection;
pDocument->get_all(&pCollection);
if( pCollection ) {
TComInterface<IDispatch> pDisp;
pCollection->item(TVariant(WideString("имя кнопки")), TVariant(0), &pDisp);
if( pDisp ) {
TComInterface<IHTMLElement> pElement;
pDisp->QueryInterface(IID_IHTMLElement, (LPVOID*)&pElement);
if( pElement ) {
pElement->click();
}
}
}
}
}
TComInterface<IHTMLDocument2> pDocument;
CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2, (LPVOID*)&pDocument);
if( pDocument ) {
TComInterface<IHTMLElementCollection> pCollection;
pDocument->get_all(&pCollection);
if( pCollection ) {
TComInterface<IDispatch> pDisp;
pCollection->item(TVariant(WideString("имя кнопки")), TVariant(0), &pDisp);
if( pDisp ) {
TComInterface<IHTMLElement> pElement;
pDisp->QueryInterface(IID_IHTMLElement, (LPVOID*)&pElement);
if( pElement ) {
pElement->click();
}
}
}
}
}