регистрация моникера
От: tofox2 Россия  
Дата: 29.07.08 09:40
Оценка:
Помогите, пожалуйста, разобраться что здесь неправильно:

    #define MONIKERTEXT    L"http://A/index.html"

    IStream *stream1, *stream2;
    IMoniker *m, *m2, *m3;
    IHTMLDocument *obj;
    CComPtr<IBindCtx> bind;

    hr = CreateBindCtx(0, &bind);
    hr = CreateURLMoniker(NULL, L"http://localhost/test.html", &m);
    hr = m->BindToStorage(bind, NULL, IID_IStream, (void**)&stream1);
    hr = m->BindToObject(bind, NULL, IID_IHTMLDocument, (void**)&obj);

    hr = CreateURLMoniker(NULL, MONIKERTEXT, &m2);
    CComPtr<IRunningObjectTable> rot;
    GetRunningObjectTable(0, &rot);
    DWORD reg = 0;
    hr = rot->Register(ROTFLAGS_REGISTRATIONKEEPSALIVE, obj, m2, &reg);

    IPersistFile *o2;
    hr = CreateURLMoniker(NULL, MONIKERTEXT, &m3);
    hr = m3->BindToStorage(bind, NULL, IID_IStream, (void**)&stream2);     //0x800c0005
    hr = m3->BindToObject(bind, NULL, IID_IPersistFile, (void**)&o2);      //работает

    LPOLESTR s = W2OLE(L"c:\\1.html");
    o2->Save(s, FALSE);     //работает, сохраняет правильный файл

    m_browser.Navigate(MONIKERTEXT, NULL, NULL, NULL, NULL);       //не работает
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.