Я собираюсь взяться за проект, для которого требуется надстройка Firefox для вызова библиотеки COM dll, установленной на клиентском компьютере под управлением Windows, и мне трудно оценить сложность этого мероприятия.
У меня довольно большой опыт работы с COM, поэтому меня это не пугает. У меня меньше опыта работы с надстройками Firefox, но я не думаю, что здесь мои проблемы.
Кто-нибудь делал что-нибудь подобное?
Позволяет ли Firefox своим дополнениям свободно общаться с внешним миром?
Есть ли где-нибудь плагин или образец кода, который делает что-то подобное (Google дал мало полезных результатов)?
Обновлять: Естественно, я бы предпочел решение, которое не требует создания расширения на C++, если это вообще возможно.





Создайте XPCOM в C++, чтобы общаться с вашими COM-объектами как обычно. Затем расширения XPCOM можно сделать доступными для Javascript для выполнения остальной части расширения (в основном, GUI, я думаю). Однако это все, что я понимаю :-)
Возможно, вас заинтересует расширение Вкладка IE с открытым исходным кодом. Я не смотрел, но думаю, что у него есть доступ Com для использования дисплея IE.
Если вы это сделаете, вам почти наверняка понадобится XPCOM. Взгляните на JSDB Шанти Рао, который поддерживает COM / ActiveX в Javascript. Материал ActiveX находится в файле с именем wrap_com.cpp. Он поддерживает большинство интерфейсов IDispatch; Метод Invoke в IDispatch - это волшебство, благодаря которому эта работа работает.
Насколько это сложно, зависит от того, насколько «легко» вы хотите, чтобы это было с помощью Javascript. Если вы реализовали вещь XPCOM под названием IDispatchObject, где вам нужно было передать имена методов и массив аргументов, то это, вероятно, не слишком сложно. Если вы хотите создать общий метод для выполнения динамических привязок к COM-объектам и обращения к ним напрямую, тогда это сложнее ... не уверен, будут ли методы, используемые в JSDB, перенесены в XPCOM.