messenage
Сообщений: 21
Оценки: 0
Присоединился: 2010-03-03 21:23:49.290000
|
У меня есть окно. в нем загружается HTML страничка(допустим ya.ru), я открываю диалог и хочу чтоб там отображались ID объектов этой странице. после нужно выделить Id кнопки и как бы программно нажать на нее… Вот код получения ID? но мне кажется. что я перемудрил с этим…
CFrameWnd * pF = (CFrameWnd *)(AfxGetMainWnd());
ASSERT_VALID( pF );
CHtmlView * pHV = (CHtmlView *)(pF->GetActiveView());
ASSERT_VALID( pHV );
// Получаем указатель на диспетчерский интерфейс
// объекта документа
IDispatch * pDp = pHV->GetHtmlDocument();
if( pDp != NULL )
{
// Получаем указатель на интерфейс IHTMLDocument2
// для доступа к свойствам и методам объекта
IHTMLDocument2 * pHD2;
HRESULT hr;
hr = pDp->QueryInterface(IID_IHTMLDocument2,(void**)&pHD2 );
if(hr == S_OK)
{
// Получаем указатель на набор анкеров
IHTMLElementCollection * pColl = NULL;
hr = pHD2->get_all( &pColl );
if( hr == S_OK && pColl != NULL )
{
LONG nElem;
hr = pColl->get_length( &nElem );
for( long i = 0; i < nElem; i++ )
{
_variant_t vIndex( i );
_variant_t vName = vIndex;
IDispatch * pDisp2;
hr = pColl->item( vName, vIndex, &pDisp2 );
if( pDisp2 )
{
// Получаем указатель на каждый
// из элементов <Anchor> для
// получения URL-адреса и его
// включения в список
//IHTMLAnchorElement * pAnchElem;
IHTMLElement * pAnchElem;
// hr = pDisp2->QueryInterface(IID_IHTMLAnchorElement,(void**) &pAnchElem );
hr = pDisp2->QueryInterface(IID_IHTMLElement, (void**) &pAnchElem);
/* if( pAnchElem )
{
pAnchElem->getclick();
}*/
if( hr == S_OK )
{
BSTR bstrHref = 0;
pAnchElem->get_id(&bstrHref );
CString strLink( bstrHref );
if( !strLink.IsEmpty() )
m_strL.AddString( strLink );
SysFreeString( bstrHref );
pAnchElem->Release();
}
pDisp2->Release();
}
}
pColl->Release();
}
pHD2->Release();
}
pDp->Release();
}
|