>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Нужна помощь в написании плагина. С++, минимум JS. http://forum.mozilla-russia.org/viewtopic.php?id=43681 |
hyp1k > 13-03-2010 00:08:11 |
Пишу плагин для фф. Выделить код Код:var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"] .getService(Components.interfaces.nsIStyleSheetService); var ios = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var u = ios.newURI("chrome://myext/content/myext.css", null, null); if(sss.sheetRegistered(u, sss.USER_SHEET)) sss.unregisterSheet(u, sss.USER_SHEET); Хочу то же самое написать на С++ и оформить в качестве длл. Может кто-нибудь поможет с примерчиком, как вызвать интерфейс Components.interfaces.nsIStyleSheetService из С++. Вижу по заголовочным файлам в sdk xulrunner, что возможностей море, но как ими воспользоваться не знаю. Например есть интерфейс Выделить код Код:nsIDOMCSSStyleSheet interface void deleteRule(in unsigned long index) unsigned long insertRule(in DOMString rule, in unsigned long index) как бы можно воспользоваться функцией insertRule, но как/откуда получить корректно объект типа nsIDOMCSSStyleSheet. Хочется чтобы из джава скрипта вызывалась 1 функция xpcom, которая вешает обработчик на загрузку страницы и менает стиль, подгружая стиль по забитому url. Буду благодарен за полезную инфу, пытаюсь разобраться уже неделю вкуриваю медленно... |
hyp1k > 17-03-2010 22:26:30 |
Программисты-разработчики расширений для ФФ. У кого-нибудь работает подобная вешь? Работает такая функция Но если добавляю nsIDOMWindow *domWindow параметр, то и все остальеные функции в этой длл перестают работать. Фаерфокс отправляет отчет об ошибке. Вот так вот работает Выделить код Код:#include "nsISupports.idl" #include "nsrootidl.idl" [scriptable, uuid(CB934085-D019-47d5-A6F0-623885873281)] interface IDemo : nsISupports { long func2(in wstring inP, out wstring outP); }; Вот так вот не работает [scriptable, uuid(CB934085-D019-47d5-A6F0-623885873281)] interface IDemo : nsISupports Обе функции: Выделить код Код:NS_IMETHODIMP Demo::Func1(nsIDOMWindow *domWindow,const PRUnichar *inP,PRUnichar **outP,PRInt32 *_retval) { const wchar_t *msg = L"привет"; *outP = (PRUnichar *) nsMemory::Clone(msg, (wcslen(msg)+1)*sizeof(wchar_t)); *_retval = 1; return NS_OK; } NS_IMETHODIMP Demo::Func2(const PRUnichar *inP,PRUnichar **outP,PRInt32 *_retval) { const wchar_t *msg = L"привет"; *outP = (PRUnichar *) nsMemory::Clone(msg, (wcslen(msg)+1)*sizeof(wchar_t)); *_retval = 1; return NS_OK; } Джаваскрипт netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); Т.е. делаю 2 сборки в одной есть первая функция, в другой ее нету. Первая работает вторая нет. Хотя вроде бы все правильно написал, по примеру приведенному выше. Как понять в чем ошибка. |
hyp1k > 20-03-2010 20:18:23 |
3 подряд сообщение пишу сам себе, наверняка кому-нибудь пригодится: |