Как программно нажать кнопку на HTML странице в MFC
От: ny4ulo  
Дата: 13.11.11 10:58
Оценка:
Не как не могу понять что не так. тестировал с ya.ru и кнопка нажимает на <a href="http://www.artlebedev.ru" onclick="c(this,17,1084)">Студия Артемия&nbsp;Лебедева</a> и загружает эту ссылку. =((
Пробовал получить идентификаторы кнопок со страничке в лист бокс диалога, что-то не то получаю, не могу понять =(

// Получаем указатель на вид
    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 );

                    IHTMLElement *pElem;
                       
                    hr = pDisp2->QueryInterface(IID_IHTMLElement, (void**) &pElem);
                    pElem ->click();
                          
                 pDisp2->Release();    
                 }

                 pColl->Release();
             }

             pHD2->Release();
         }
         
         pDp->Release();
    }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.