IWebBrowser2->Navigate проблема
От: DoesntMatter  
Дата: 17.11.07 14:54
Оценка:
#include <stdio.h>
#include <stdlib.h>
#include <exdisp.h>
#include <mshtml.h>

int main(int argc, char* argv[])
{
    OleInitialize(NULL);
    
    IShellWindows* ShellWindows = NULL;
    
    if (FAILED(CoCreateInstance(CLSID_ShellWindows, NULL, CLSCTX_ALL, IID_IShellWindows, (void **)&ShellWindows)))
    {
        printf("Can't create IShellWindows instance\n");
        return 1;
    }
    
    long count;
    
    if (!SUCCEEDED(ShellWindows->get_Count(&count)))
    {
        return 0;
    }

    for (int i = 0; i < count; i++)
    {
        VARIANT v;
        v.vt = VT_I4;
        v.lVal = i;
        
        IDispatch* WebBrowserDisp;
        if (SUCCEEDED(ShellWindows->Item(v, &WebBrowserDisp)))
        {
            IWebBrowser2* WebBrowserIntf;
            if (SUCCEEDED(WebBrowserDisp->QueryInterface(IID_IWebBrowser2, (void **)&WebBrowserIntf)))
            {
                BSTR bstrLocationURL;    
                if (SUCCEEDED(WebBrowserIntf->get_LocationURL(&bstrLocationURL)))
                {
                    MessageBoxW(0,0,bstrLocationURL,0);
                } else { MessageBox(0,0,"Cant get url",0); }

                if (SUCCEEDED(WebBrowserIntf->GoBack()))
                {
                    MessageBox(0,0,"Im back",0);
                } else { MessageBox(0,0,"Cant GoBack",0); }

                if (SUCCEEDED(WebBrowserIntf->Navigate(bstrLocationURL,0,0,0,0)))
                {
                    MessageBox(0,0,"GoNext ok",0);
                } else { MessageBox(0,0,"Cant gonext",0); }
            }
        }
    }
    
    OleUninitialize();
    return 0;
}


Перехватываютсья все окна Ie, но спокойно делаеться GoBack, а вот Navigate делать уже не хочет
в чем может быть проблема?
Re: IWebBrowser2->Navigate проблема
От: DoesntMatter  
Дата: 18.11.07 10:10
Оценка:
Здравствуйте, DoesntMatter, Вы писали:


DM>
DM>#include <stdio.h>
DM>#include <stdlib.h>
DM>#include <exdisp.h>
DM>#include <mshtml.h>

DM>int main(int argc, char* argv[])
DM>{
DM>    OleInitialize(NULL);
    
DM>    IShellWindows* ShellWindows = NULL;
    
DM>    if (FAILED(CoCreateInstance(CLSID_ShellWindows, NULL, CLSCTX_ALL, IID_IShellWindows, (void **)&ShellWindows)))
DM>    {
DM>        printf("Can't create IShellWindows instance\n");
DM>        return 1;
DM>    }
    
DM>    long count;
    
DM>    if (!SUCCEEDED(ShellWindows->get_Count(&count)))
DM>    {
DM>        return 0;
DM>    }

DM>    for (int i = 0; i < count; i++)
DM>    {
DM>        VARIANT v;
DM>        v.vt = VT_I4;
DM>        v.lVal = i;
        
DM>        IDispatch* WebBrowserDisp;
DM>        if (SUCCEEDED(ShellWindows->Item(v, &WebBrowserDisp)))
DM>        {
DM>            IWebBrowser2* WebBrowserIntf;
DM>            if (SUCCEEDED(WebBrowserDisp->QueryInterface(IID_IWebBrowser2, (void **)&WebBrowserIntf)))
DM>            {
DM>                BSTR bstrLocationURL;    
DM>                if (SUCCEEDED(WebBrowserIntf->get_LocationURL(&bstrLocationURL)))
DM>                {
DM>                    MessageBoxW(0,0,bstrLocationURL,0);
DM>                } else { MessageBox(0,0,"Cant get url",0); }

DM>                if (SUCCEEDED(WebBrowserIntf->GoBack()))
DM>                {
DM>                    MessageBox(0,0,"Im back",0);
DM>                } else { MessageBox(0,0,"Cant GoBack",0); }

DM>                if (SUCCEEDED(WebBrowserIntf->Navigate(bstrLocationURL,0,0,0,0)))
DM>                {
DM>                    MessageBox(0,0,"GoNext ok",0);
DM>                } else { MessageBox(0,0,"Cant gonext",0); }
DM>            }
DM>        }
DM>    }
    
DM>    OleUninitialize();
DM>    return 0;
DM>}

DM>


DM>Перехватываютсья все окна Ie, но спокойно делаеться GoBack, а вот Navigate делать уже не хочет

DM>в чем может быть проблема?

Наткнулся еще вот на статью... к сожалению автору письм оне дошло видмо мейл изменился
текст письма:

Здраствуйте, не давно наткнулся на вашу статью "Как подключиться к запущенным экземплярам Explorer'a" (http://rsdn.ru/article/qna/inet/enumexp.xml
Автор(ы): Тимофей Чадов
Дата: 14.03.2002
). Она очень меня заинтересовала, но вот возникла небоьшая проблемка:
CComQIPtr<IWebBrowser2> pIE( pDisp); // дело в том что мы тут хоть и получаем IWebBrowser2 в своей распоряжение

CComBSTR bsUrl(L"http://rsdn.ru/");
pIE->Navigate(bsUrl,0,0,0,0); //но не можем воспользоваться методом Navigate/Navigate2

Не могли бы вы мне подсказать в чем проблема?

Заранее спасибо.
Re[2]: IWebBrowser2->Navigate проблема
От: Koduc Россия  
Дата: 18.11.07 11:33
Оценка:
DM> CComBSTR bsUrl(L"http://rsdn.ru/");
DM> pIE->>Navigate(bsUrl,0,0,0,0); //но не можем воспользоваться методом Navigate/Navigate2

http://www.rsdn.ru/Forum/?mid=202517
Автор: vovanblk
Дата: 26.02.03

Для вашего случая стоит попробовать так:

CComBSTR bsUrl(L"http://rsdn.ru/");
CComVariant vNull(0);
pIE->>Navigate(bsUrl,&vNull,&vNull,&vNull,&vNull);
Re[3]: IWebBrowser2->Navigate проблема
От: grok  
Дата: 18.11.07 21:38
Оценка:
Здравствуйте, Koduc, Вы писали:

DM>> CComBSTR bsUrl(L"http://rsdn.ru/");

DM>> pIE->>Navigate(bsUrl,0,0,0,0); //но не можем воспользоваться методом Navigate/Navigate2

K>http://www.rsdn.ru/Forum/?mid=202517
Автор: vovanblk
Дата: 26.02.03

K>Для вашего случая стоит попробовать так:

K>CComBSTR bsUrl(L"http://rsdn.ru/");

K>CComVariant vNull(0);
pIE->>>Navigate(bsUrl,&vNull,&vNull,&vNull,&vNull);


У меня была такая же проблема как у топикстартера, и это совет помог, спасибо!
Сначала делал так:
Navigate(BSTR("http://url.com"),&vNull,&vNull,&vNull,&vNull);
и navigate просто ничего не делал.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.