Страницы: 1
Для работы расширения с другими приложениями можно сделать бинарную XPCOM компоненту, она будет лежать как длл в опеределённой папке расширения (components). Расширение будет вызывать функции ДЛЛ, которая, в свою очередь, будет обращаться к внешним программам.
Про оперу ничего сказать не могу, там с виджетами как-то всё не так :))
почти год прошёл, а не написал... :(
мне бы пригодилось.
спасибо, lemax, за помощь.
резюмирую.
получилось сделать двумя способами:
1. через nsIWindowWatcher и OpenWindow.
не устраивал, потому что нельзя было сделать окно модальным...
2. а так меня всё устроило:
nsCOMPtr <nsIWindowMediator> mediator(do_GetService("@mozilla.org/appshell/window-mediator;1"));
nsIDOMWindowInternal *win;
mediator->GetMostRecentWindow(L"navigator:browser",&win);
nsCOMPtr<nsIDOMWindow> tWindow;
win->OpenDialog(
NS_LITERAL_STRING("chrome://******.htm"),
NS_LITERAL_STRING(""),
NS_LITERAL_STRING("chrome,dialog,modal,centerscreen,resizable=no"),
args,
getter_AddRefs(tWindow)
);
далее, обрабатываю параметры полученные из диалога.
т.к. изменять что-то в открытом окне из CPP мне не надо, то остановился, на достигнутом.
Пытаюсь сделать тоже самое, вызвать диалог из c++. Но я пошёл другим путём:
nsCOMPtr<nsIWebBrowser> pBrowser (do_GetService("@mozilla.org/embedding/browser/nsWebBrowser;1")); nsCOMPtr<nsIDOMWindow> domWindow; pBrowser->GetContentDOMWindow(getter_AddRefs(domWindow)); nsCOMPtr<nsIDOMWindowInternal> domWindowInt; domWindowPrivate->GetPrivateRoot(getter_AddRefs(domWindowInt));
а уже из domWindowInt пытаюсь вызвать openDialog(.....);
но проблема в строке с методом GetContentDOMWindow, после неё domWindow нуловый.
может кто-нибудь знает в чём проблема?
Страницы: 1