(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Клиентские Windows приложения на JavaScript (исходники)

Источник: habrahabr

Хочу рассказать про один интересный способ создания приложений на javascript с родным виндовым gui.

Вообще, существует куча разных вариантов написания виндовых приложений на javascript:

  1. hta и wsh - html applications и windows script host - это, вероятно, самые известные технологии. hta фактически представляет собой html страницу с расширенными правами в системе - возможностью лазить в сеть, гадить в реестр, файловую систему и подключать к этим делам activex. С использованием hta сделаны многие компоненты самой windows.
  2. .net framework - этому вообще по барабану, на чем вы пишете, лишь бы итогом был msil. Возможно, jscript.net вместе с windows.forms могут вызвать у кого-то ощущение родного виндового интерфейса. Лично меня они совсем не радуют - ни визуально, ни скоростью.
  3. xulrunner - framework от mozilla предлагает gecko вместо ie, xpcom вместо com/activex. Это всего за 20 мегабайт оверхеда.
  4. wxjavascript - известная кросс-платформенная библиотека wxwidgets теперь и для javascript. Все это благодаря js-движку spidermonkey от mozilla и стараниям одного бельгийца. Кстати, этот же уважаемый - автор mod_js для apache.

Ввиду того, что все вышеописанное уныло, громоздко и требует изучения, предлагаю рассмотреть еще один вариант - wso.

Цитируя автора:
windowsystemobject (wso) - это универсальный программный комплекс для обеспечения доступа к оконной подсистеме windows на базе архитектуры com, для создания оконных интерфейсов в программах, написанных на сценарных (скриптовых) языках, а также в программах, написанных на других языках и в других системах программирования. С помощью wso можно легко создавать оконные интерфейсы на jscript, vbscript, perl, python.

После этих слов ничего, кроме огромного человеческого спасибо Александру Борисовичу Веретенникову, и не скажешь.

Опять цитата о возможностях wso:

  • wso обеспечивает полный доступ ко всем возможностям оконной системы, включая рисование в окнах и поддержку всех встроенных управляющих элементов windows.
  • wso поддерживает использование любых элементов activex, таких как internet explorer или windows media player.
  • wso поддерживает работу со всеми популярными форматами графических файлов.
  • wso доступен из любого языка программирования, поддерживающего com-интерфейсы автоматизации.
  • Доступ к wso осуществляется с помощью интуитивно понятной объектной модели, описанной в этом документе. Программисты, знакомые с оконным программированием для windows, быстро обнаружат, что ничего нового им осваивать не нужно.
  • wso обеспечивает полную поддержку обработки событий от оконных элементов.
  • wso позволяет использовать символические имена констант, принятые в оконном программировании windows, а не мучиться с их числовыми значениями.
  • wso работает в любой современной версии windows, а именно: 98se, me, nt 4, 2000, xp и 2003.


Все просто замечательно! Теперь единственное, что отделяет нас от родного gui на javascript - это регистрация компонента wso. Как известно, windows требует регистрации в реестре com/activex компонентов перед их использованием. Это серьезное ограничение, так как нужны права администратора системы. Тем не менее, в Редмонде уже столкнулись с данной проблемой и, начиная с xp sp2, достаточно описать интерфейсы всех activex в manifest приложения.
Итак, что нам нужно для сборки самостоятельной программы на javascript + wso:
  1. Сам wso.dll. Качаем и используем даже в коммерческих приложениях free of charge, но вознося хвалу Александру Борисовичу.
  2. Код программы на javascript. Примеры тут.
  3. Загрузчик app.exe, подключающий ms scriptcontrol для интерпретации js (фактически это аналог wscript.exe). Его нужно написать самостоятельно или взять готовый в конце статьи. В моем варианте это десять строк на Delphi  - копипейст из статьи про scriptcontrol.
  4. Манифест приложения app.exe.manifest - манифест, где нужно указать зависимость от компонента wso, других activex (если нужно) и заодно включить поддержку xp-шных тем оформления. Изготавливается вручную следующим образом:

    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestversion="1.0">
    
    <assemblyidentity
    
      type="win32"
    
      name="client"
    
      version="1.0.0.0" />
    
      <dependency>
    
      <!-- подключаем wso -->
    
              <dependentassembly>
    
                  <assemblyidentity
    
                      type="win32"
    
                      name="wso.sxs"
    
                      version="1.0.0.0" />
    
              </dependentassembly>
    
      </dependency>
    
      <dependency>
    
      <!-- поддержка тем оформления xp -->
    
    	<dependentassembly>
    
    		<assemblyidentity
    
    		  type="win32"
    
    		  name="microsoft.windows.common-controls"
    
    		  version="6.0.0.0"
    
    		  publickeytoken="6595b64144ccf1df"
    
    		  language="*"
    
    		  processorarchitecture="x86"/>
    
    	  </dependentassembly>
    
      </dependency>
    
    </assembly>

  5. Манифест для wso - wso.sxs.manifest, описывающий интерфейсы activex компонента. Этот манифест генерируется замечательной программой regsvr42.exe. Она перехватывает все записи, которые делаются в реестр при регистрации компонента, и сохраняет их в виде manifest. Аналогичную операцию нужно проделать для всех внешних компонентов, которые вы хотите использовать.

Вот, что получилось у меня: wso_demo.zip (573 kb) slil.ru / onlinedisk.ru / rapidshare.de.
Загрузчик demo.exe создает глобальный объект wso и запускает функцию main() из файла main.js.
Экзешник, естественно, можно переименовать (не забывая про его manifest) и вставить иконку любым менеджером ресурсов.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 28.12.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
GFI LanGuard подписка на 1 год (25-49 лицензий)
SAP® Crystal Dashboard Design Departmental 2016 WIN INTL NUL
SAP CRYSTAL Server 2013 WIN INTL 5 CAL License
Quest Software. Toad for Oracle Development Suite
Symantec Endpoint Encryption, License, 1-24 Devices
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
СУБД Oracle "с нуля"
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Новые материалы
Программирование на Visual Basic/Visual Studio и ASP/ASP.NET
Мастерская программиста
Каждый день новые драйверы для вашего компьютера!
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100