Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > TWebBrowser: доступ к элементам web документа


Автор: OlexXX 26.9.2009, 05:14
Вот простой кусок кода на Delphi:

var
    Source:String;
begin
    Source:=WebBrowser1.OleObject.Document.Images.Item(0).Src;
    ...

как этот кусок перевести в Builder c++, чтобы было также просто? :(


ПС По идее, мне нужно добраться до Document->GetElementById()
 

Автор: OlexXX 26.9.2009, 05:58
Ну, скажем, добрался я до того, что хотел... Почти...

  IHTMLDocument2 *pHTMLDocument = NULL;
  IHTMLElementCollection *pAll, *pObj;
  if(SUCCEEDED(WebBrowser1->Document->QueryInterface(IID_IHTMLDocument2, (LPVOID*)&pHTMLDocument)))
  {
    pHTMLDocument->get_all(&pAll);
    if(pAll)
    {
      pAll->item(TVariant("Player"),0, &pObj)  
      pObj->Release();
      pAll->Release();
    }
  }
  pHTMLDocument->Release();

НО вот тут ругается:

      pAll->item(TVariant("Player"),0, &pObj)  

[C++ Error] Unit1.cpp(46): E2031 Cannot cast from 'char *' to 'TVariant'

Буду благодарен за подсказку.

Добавлено через 11 минут и 16 секунд
Мммм....

Все получилось. Вот конечный код:


  IHTMLDocument2 *pHTMLDocument = NULL;
  IHTMLElementCollection *pAll;
  if(SUCCEEDED(WebBrowser1->Document->QueryInterface(IID_IHTMLDocument2, (LPVOID*)&pHTMLDocument)))
  {
    pHTMLDocument->get_all(&pAll);
    if(pAll)
    {
      IDispatch *pObj;
      pAll->item(Variant(WideString("Player")),Variant(0), &pObj);
      pObj->Release();
      pAll->Release();
    }
  }
  pHTMLDocument->Release();


А теперь самый главный вопрос smile))

Собственно, все это было нужно для получения интерфейса объекта плеера на вебстраничке.

КАК ТЕПЕРЬ обратиться к методам этого объекта? С интерфейсами не работал. :(


Автор: OlexXX 27.9.2009, 18:39
Ап :(

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)