Сделал все как описано в статье http://developer.mozilla.org/en/docs/How_to_build_a_binary_XPCOM_component_using_Visual_Studio
Сделал скрипт:

Выделить код

Код:

try {
    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
    const cid = "@starkravingfinkle.org/specialthing;1";
    var obj = Components.classes[cid].createInstance();
    obj = obj.QueryInterface(Components.interfaces.ISpecialThing);
// на этой строчке получаю исключение: NS_ERROR_XPC_BAD_CONVERT_JS_NULL_REF
//(NULL can not be used for a c++ reference type)
  }
  catch (err) {
    alert(err);
    return;
  }
  var res = obj.add(3, 4);
  alert('3+4 = ' + res);

  var name = obj.name;
  alert('Name = ' + name);

  obj.name = 'New Name';
  name = obj.name;
  alert('Name = ' + name);

что это за исключение, почему и как с ним бороться?

У меня стоит:
gecko-sdk-win32-msvc-1.8.0.4.zip
firefox 1.5
Visual Studio 2005

Попутно пара вопросов:
1. Нужно организовать функцию Init и подгрузить пару библиотек. Как это сделать?
2. Сделаю некоторую ф-цию: DoSomth, во время выполнения которой небходимо реализовать прогресс бар, с возможностью прервать операцию. как это сделать?

Замучался уже...
var obj = Components.classes[cid].createInstance();
здесь все нормально. Встаю отладчиком, конструктор вызывается — все гуд? все работает!
obj = obj.QueryInterface(Components.interfaces.ISpecialThing);
здесь падаем... опять этот нул.... в чем может быть дело?

сделал так:
var obj = Components.classes[cid].createInstance();
alert(Components.interfaces.ISpecialThing);

Получаю сообщение: undefined. Приплыли...

Все решилось гораздо проще!
Я сам, тупица, вместо *.xpt клал в компоненты *.exp
Остается один актульный вопрос: Делаю кнопку, накоторую вешаю ява скрипт. Ява скрипт из моего интерфейса дергает функцию из моего интерфейса, как мне реализовать прогресс бар с возможностью прервать операцию???

hades
а разве движение обычного прогресс бара остановить нельзя?

Дело в том, что я только начал изучать xpcom, меня, желательно ткнуть в примерчик!
и еще вопрос: если я вызываю ф-wb. из ява скрипта, ФФ подвисает, надо делать callbak ф-цию, видимо. Скажите, в каком направлении копать?

shutnik
http://www.hevanet.com/acorbin/xul/top.xul

shutnik
не то... мне с xpcom надо разобраться... потом уже xul