Здравствуйте, Everon, Вы писали:
E>Мне только этот момент уловить бы. Как обрабатывать кнопки и что должно лежать в "locale" я знаю, со структурой *.rdf и *.dtd тоже знаком. Понять бы только как добраться из этого всего до родного WinAPI
Да.
SJA>>3. Компилим IMessageBoxer.idl + MessageBoxer.cpp => IMessageBoxer.xpt + MessageBoxer.dll E>Можно делать по этой инструкции?
Чесно говоря не знаю. Почему-то все инструкции были достаточно кривыми (ну или мои руки ...) и не одна не помогла сразу и полностью.
Пришлось пробовать разные варианты. После этих всех попыток и неудач у меня сложилось впечатление, что в любой момент моё расширение может перестать работать.
Но это отностися только к XPCOM. Остальная часть — XUL/JS работает стабильно.
SJA>>4. Регистрируем компонент во время инсталяции аддона. Точно не помню как, если надо — посмотрю. E>Если не затруднит Хотя чтоб узнать как, думаю достаточно разобрать какой-нибудь готовый экстеншн, не так ли?
Тут работа навалилась, поэтому не могу отвлечся. Выкладываю свой аддон. http://files.rsdn.ru/12991/GoJanusFF.zip
Можно либо разобратся с ним, или просто использовать как основу для другого плагина переименовав все имена.
Вот поставил себе Mozilla Thunderbird. Хорошая штука, но почемуто разработчики не предусмотрели в ней возможность сворачивания в трей. Ладно, не беда, думаю, прикручу эту фичу сам, да не тут-то было! Ничего не могу понять в архитектуре её плагинов и расширений. Вот как всё просто у Винампа — кинул свою длл'ку в папку Plugins и радуешься, а тут какие-то XPI'ки (которые, на самом деле, ZIP-архивы) набитые JS'ами, и ещё непонятно чем. Порылся в гугле, он упорно посылает на www.mozilla-russia.org, но не могу я там ничего толкового найти (в основном там всё про Firefox). Написал на первое время отдельную программку, которая запускает Thunderbird, хучит его, сабклассит, и вообще ведёт себя с ней крайне жестоко Но, тем не менее, хочется всё сделать по взрослому. Чтоб можно было это расширение устанавливать и запускать предназначенными для этого средствами. Чтоб красиво было. Поэтому, не подкинет ли кто ссылок на толковую инфу по этому вопросу? Или может поделится какими-то своими наработками? Спасибо.
Здравствуйте, xorandor, Вы писали:
X>Вот поставил себе Mozilla Thunderbird. Хорошая штука, но почемуто разработчики не предусмотрели в ней возможность сворачивания в трей.
Здравствуйте, mikko, Вы писали:
M>У меня валялось несколько ссылок… M>...
Спасибо! Уже что-то проясняется. Даже добился того, чтобы Громоптица склевала таки мою длл'ку Расширение в списке присутствует, красота! Буду дальше шаманить...
ЗЫ: Кто ещё чего знает по этой теме, делитесь, не стесняйтесь
Здравствуйте, xorandor, Вы писали:
X>Спасибо! Уже что-то проясняется. Даже добился того, чтобы Громоптица склевала таки мою длл'ку Расширение в списке присутствует, красота! Буду дальше шаманить...
Ну, есть у меня аддон один, в котором используется XPCOM. Он весьма простой, поэтому думаю его легко будет понять.
Хотя судя по словам
мою длл'ку
ты уже собирал какой-то XPCOM компонент ? Или это был всё-таки .xpi ?
Здравствуйте, Sergey J. A., Вы писали:
SJA>Ну, есть у меня аддон один, в котором используется XPCOM. Он весьма простой, поэтому думаю его легко будет понять. SJA>Хотя судя по словам "мою длл'ку" ты уже собирал какой-то XPCOM компонент ? Или это был всё-таки .xpi ?
Я, если честно, пока даже понятия не имею, что такое XPCOM-сомпонент Как я говорил выше, я уже смастерил отдельную программку (EXE и DLL) которая запускает Thunderbird и фильтрует её сообщения на нажатие кнопки "Закрыть" и сообщения от иконки в трее (которую создаёт моя программа), и, если таковое происходит, то (из подменённой WndProc) сворачивает/восстанавливает окно. Просто хотелось это реализовать по нормальному, чтоб был именно XPI-файл, из которого можно установить расширение, полюбоваться на него, висящего в списке установленных расширений, и даже удалить оттуда, если понадобится. Вроде получается потихоньку, но с этими RDF'ами и JS'ами ещё разбираться и разбираться. Кроме того, чтобы всё было как у людей, неплохо бы впихнуть многоязыковую поддержку (это кажется не сложно, но как потом JS'ы с библиотекой связать? Или там можно все менюшки и окна настроек в XUL'ах описать?), вобщем хочется изучить предмет поподробнее... Конечно, чисто для своих нужд мне хватит и того, что уже есть, но ведь, потом может захотеться и с миром поделиться =)
Здравствуйте, xorandor, Вы писали:
X>Я, если честно, пока даже понятия не имею, что такое XPCOM-сомпонент
Что-бы добратся до платформенно-зависимого кода. Т.е. тебе нужно будет работать с треем, а такого апи в XUL-е нет(а может я просто не знаю). Поэтому нужен компонент, из которого ты сможеш добратся до WinAPI — XPCOM компонент.
X> Кроме того, чтобы всё было как у людей, неплохо бы впихнуть многоязыковую поддержку
Это в принципе не сложно. Правда я долго бился головой, пока всё сделал правильно. Принцип простой, но документация почему-то кривая и долго ничего не получалось.
Здравствуйте, Sergey J. A., Вы писали:
X>>Поэтому нужен компонент, из которого ты сможеш добратся до WinAPI — XPCOM компонент.
Спасибо, теперь понятно что это за зверь такой. Будем изучать сей предмет потихоньку, а пока буду довольствоваться тем что моя библиотека просто загружается. На первое время этого хватит для реализации идеи. Кстати, я правильно понял, что все события окна Thunderbird можно в этих скриптах отлавливать и обрабатывать, без всякого сабклассинга?
Здравствуйте, xorandor, Вы писали:
X>Кстати, я правильно понял, что все события окна Thunderbird можно в этих скриптах отлавливать и обрабатывать, без всякого сабклассинга?
Ну, можно отлавливать все события от XUL элементов, из которых состоит Thunderbird. А если ты об обычных виндовых событиях WM_xxxx, то наверное нет... Хотя точно не знаю.
Здравствуйте, Sergey J. A., Вы писали:
SJA>Здравствуйте, xorandor, Вы писали:
X>>Я, если честно, пока даже понятия не имею, что такое XPCOM-сомпонент SJA>Что-бы добратся до платформенно-зависимого кода. Т.е. тебе нужно будет работать с треем, а такого апи в XUL-е нет(а может я просто не знаю). Поэтому нужен компонент, из которого ты сможеш добратся до WinAPI — XPCOM компонент.
Както тоже пытался понять принцип такого связывания, но ничего не вышло. Вот например, в экстеншнах которые используют WinAPI всегда имеется два файла: *.xpt и *.dll, и я чегото не пойму, они в паре создают переходник из JavaScript к API или *.xpt — это переходник к конкретной *.dll? Т.е. вызывая чтото из скриптов, через, *.xpt можно добраться до экспортируемых функций *.dll или как? Если в паре и ко всем API, то зачем собирать разные XPCOM компоненты для каждого экстеншна? Если к конкретной библиотеке, то почему она собирается вместе с компонентом, почему нельзя скомпилировать её отдельно, а компонент отдельно?
Здравствуйте, Everon, Вы писали:
X>>>Я, если честно, пока даже понятия не имею, что такое XPCOM-сомпонент SJA>>Что-бы добратся до платформенно-зависимого кода. Т.е. тебе нужно будет работать с треем, а такого апи в XUL-е нет(а может я просто не знаю). Поэтому нужен компонент, из которого ты сможеш добратся до WinAPI — XPCOM компонент. E>Както тоже пытался понять принцип такого связывания, но ничего не вышло. Вот например, в экстеншнах которые используют WinAPI всегда имеется два файла: *.xpt и *.dll, и я чегото не пойму, они в паре создают переходник из JavaScript к API или *.xpt — это переходник к конкретной *.dll? Т.е. вызывая чтото из скриптов, через, *.xpt можно добраться до экспортируемых функций *.dll или как?
xpt это библиотека типов. Сам платфоременнозависимый код компонента находится в dll. Т.е. JS основываясь на данных о типах из xpt дёргает методы из dll.
Т.е. например что-бы доступится к API из VBA нужно написать COM компонент. Тут то-же самое, только называется по другому
COM (.tlb + .dll) === XPCOM (.xpt + .dll)
Здравствуйте, Sergey J. A., Вы писали:
SJA>xpt это библиотека типов. Сам платфоременнозависимый код компонента находится в dll. Т.е. JS основываясь на данных о типах из xpt дёргает методы из dll. SJA>Т.е. например что-бы доступится к API из VBA нужно написать COM компонент. Тут то-же самое, только называется по другому SJA>COM (.tlb + .dll) === XPCOM (.xpt + .dll)
Мда, понятно, что ничего непонятно Вот написал я допустим экстеншн добавляющий кнопку в тулбар файрфокса, как теперь мне из кода на JavaScript, обрабатывающего эту кнопку, вызвать скажем апишний MessageBox с текстом "Йа програмко =)" и чтобы этот текст был взят из папки locale моего екстеншна?
Мне только этот момент уловить бы. Как обрабатывать кнопки и что должно лежать в "locale" я знаю, со структурой *.rdf и *.dtd тоже знаком. Понять бы только как добраться из этого всего до родного WinAPI
SJA>3. Компилим IMessageBoxer.idl + MessageBoxer.cpp => IMessageBoxer.xpt + MessageBoxer.dll
Можно делать по этой инструкции?
SJA>4. Регистрируем компонент во время инсталяции аддона. Точно не помню как, если надо — посмотрю.
Если не затруднит Хотя чтоб узнать как, думаю достаточно разобрать какой-нибудь готовый экстеншн, не так ли?
Спасибо за развёрнутый ответ. Будет чем себя развлеч в выходные
Здравствуйте, Sergey J. A., Вы писали:
SJA>Тут работа навалилась, поэтому не могу отвлечся.
Всё, всё, более не беспокою Предоставленной информации думаю с лихвой хватит чтоб всё более-менее для меня прояснилось. Огромное спасибо!