Клієнтські Windows програми на JavaScript (исходники), Різне, Програмування, статті

Хочу розповісти про один цікавий спосіб створення додатків на 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. download. Aspx? M = 1 “target = _blank> Качаємо і використовуємо навіть в комерційних додатках 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>

    <dependentassembly>
    <assemblyidentity
    type=”win32″
    name=”wso.sxs”
    version=”1.0.0.0″ />
    </dependentassembly>
    </dependency>
    <dependency>

    <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) і вставити іконку будь-яким менеджером ресурсів.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*