Полезная информация

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№125-08-2006 17:44:37

btr
Участник
 
Группа: Members
Зарегистрирован: 25-08-2006
Сообщений: 3

Перейти по ссылке

Всем привет!
Пишу свой первый XPCOM компонент. Пишу на С++. Компонент должен перемещаться по ссылкам внутри одного сайта и собирать информацию с определенных страниц.
Внимание вопрос: Каким образом можно открыть новое окно браузера и загрузить в него страницу, зная ее адрес?
В исходниках нашел функцию nsIBrowserDOMWindow::openURI, которая по идее должна делать то, что мне нужно. Но не знаю как получить объект nsIBrowserDOMWindow. Знаю, что существует интерфейс nsIDOMChromeWindow у которого есть функция GetBrowserDOMWindow, но QueryInterface(NS_GET_IID(nsIDOMChromeWindow), getter_AddRefs(pChromeWin)) почему-то не срабатывает. Возвращает ошибку 0x80004002, хотя Component Viewer этот интерфейс видит.
Может, я не с того конца ковыряю?

Отсутствует

 

№230-08-2006 19:39:38

btr
Участник
 
Группа: Members
Зарегистрирован: 25-08-2006
Сообщений: 3

Re: Перейти по ссылке

Проблему решил. Поскольку никто так и не ответил, выкладываю код (Вдруг пригодится кому).

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));

Отсутствует

 

№331-08-2006 19:03:30

btr
Участник
 
Группа: Members
Зарегистрирован: 25-08-2006
Сообщений: 3

Re: Перейти по ссылке

Кстати, кто-нибудь знает как уничтожить окно, созданное nsIAppShellService::CreateTopLevelWindow()?

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]