Всем привет! Пишу свой первый XPCOM компонент. Пишу на С++. Компонент должен перемещаться по ссылкам внутри одного сайта и собирать информацию с определенных страниц. Внимание вопрос: Каким образом можно открыть новое окно браузера и загрузить в него страницу, зная ее адрес? В исходниках нашел функцию nsIBrowserDOMWindow::openURI, которая по идее должна делать то, что мне нужно. Но не знаю как получить объект nsIBrowserDOMWindow. Знаю, что существует интерфейс nsIDOMChromeWindow у которого есть функция GetBrowserDOMWindow, но QueryInterface(NS_GET_IID(nsIDOMChromeWindow), getter_AddRefs(pChromeWin)) почему-то не срабатывает. Возвращает ошибку 0x80004002, хотя Component Viewer этот интерфейс видит. Может, я не с того конца ковыряю? |
Проблему решил. Поскольку никто так и не ответил, выкладываю код (Вдруг пригодится кому). nsresult rv; nsCOMPtr<nsIAppShellService>m_pAppShellService = do_GetService( "@mozilla.org/appshell/appShellService;1", &rv); if (!m_pAppShellService) return rv; nsCOMPtr<nsIURI> uriObj; rv = NS_NewURI(getter_AddRefs(uriObj), Url, NULL, NULL); if (!uriObj) { return rv; } rv=m_pAppShellService->CreateTopLevelWindow(NULL, uriObj, 0, 300, 300, NULL, getter_AddRefs(m_pXULWindow)); |