Помогите, пожалуйста, разобраться что здесь неправильно:
#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, ®);
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); //не работает
Здравствуйте, tofox2, Вы писали:
T>T> #define MONIKERTEXT L"http://A/index.html"
T> m_browser.Navigate(MONIKERTEXT, NULL, NULL, NULL, NULL); //не работает
T>
А причем здесь моникеры?
#define MONIKERTEXT L"http://A/index.html"
CComVariant empty;
m_browser.Navigate(MONIKERTEXT, &empty, &empty, &empty, &empty); //так работает?
Здравствуйте, AndrewJD, Вы писали:
AJD>А причем здесь моникеры?
Задача не открыть в браузере урл, задача зарегестрировать моникер, доступный для использования в программе и привязать к этому моникеру IStream, связаный с неким куском памяти.
Данный код искусственный, в нём я только пытаюсь понять механизм работы моникера, а именно присвоить файлу
http://localhost/test.html имя
http://A/index.html
И открыть это имя в браузере.
Здравствуйте, tofox2, Вы писали:
T>Задача не открыть в браузере урл, задача зарегестрировать моникер, доступный для использования в программе и привязать к этому моникеру IStream, связаный с неким куском памяти.
Тогда в чем вопрос? У тебя же моникер создался и содержимое было успешно сохранено.
T>Данный код искусственный, в нём я только пытаюсь понять механизм работы моникера, а именно присвоить файлу http://localhost/test.html имя http://A/index.html
T>И открыть это имя в браузере.
Может тебе нужны pluggable protocol?