Передать сообщение из javascript в приложение — Windows и Mac OSx — Lazarus

Мне нужна функция javascript для запуска функции в приложении, разработанном в Lazarus как для OSx, так и для Windows. Я изучаю Lazarus, и я бы назвал себя новичком среднего уровня. Я очень мало знаю о javascript.

Насколько я понимаю, javascript работает в изолированной программной среде, поэтому не может получить прямой доступ к приложению. Поэтому я думал об использовании какого-то tcp-вызова из javascript в приложение, передавая параметр, который при получении вызовет событие. Это должно работать как на Windows, так и на Mac. В идеале использовать те же компоненты/код, но если это невозможно, то все, что мне нужно сделать.

Мои вопросы:

1) Это звучит как правильный подход? 2) Если да, то какой способ и компоненты лучше всего использовать для достижения этой цели?

Я смотрел на синапс - но, честно говоря, я немного потерялся в том, какие компоненты мне нужно использовать, и прочитал, чтобы настроить это.

По сути, javascript должен отправить параметр моему приложению, которое затем выполняет действие, когда оно получено.

Заранее спасибо, если сможете помочь.


person user2125574    schedule 23.04.2013    source источник
comment
Какой тип сервера вы используете для создания своих страниц? Вы работаете с PHP, .NET и т. д. или просто создаете статические HTML-страницы?   -  person Godwin    schedule 24.04.2013
comment
Извините - я не ясно выразился. Я не генерирую никаких страниц. Что я на самом деле делаю, так это пытаюсь запустить мое приложение для выполнения задачи из Adobe Photoshop. Photoshop позволяет добавлять пункты меню в некоторые продукты с помощью javascript. Мое приложение представляет собой довольно стандартное настольное приложение Lazarus. Поэтому мне нужно получить сообщение в моем приложении (чтобы вызвать действие) из пункта меню Photoshop с помощью Javascript. Само мое приложение ничего не передаст взамен (если только оно не должно что-то передать для полноты).   -  person user2125574    schedule 24.04.2013


Ответы (2)


Я только что сделал быстрый поиск, и мне кажется, что сценарии Adobe Photoshop - это не совсем javascript, а его вариант, называемый ExtendScript. Существуют руководства по языку, которые вы можете найти (как этот), но быстрый поиск в Google также дал эта страница и эта страница, который описывает команду File.execute, которую можно использовать для выполнения внешних приложений, что, вероятно, было бы лучшим путем.

Мой вопрос о серверах вызывает другую альтернативу: если у вас есть работающий сервер, вы можете вызвать его из javascript, используя URL-адрес. Тогда у сервера может быть больше полномочий для обработки события.

Извините, что просто отправил вас на другие сайты и направления, чтобы попытаться решить эту проблему, но это довольно специфическая область.

person Godwin    schedule 24.04.2013
comment
Затем внешняя программа может сигнализировать приложению Lazarus через любую форму Windows IPC. - person Marco van de Voort; 27.04.2013

Вам, вероятно, нужно больше узнать о JavaScript, так как он имеет много ограничений, таких как отсутствие доступа к локальным файлам, отсутствие возможности связи с сервером из другого домена. Нижеприведенные ссылки, вероятно, дадут вам лучшее представление:

http://en.wikipedia.org/wiki/Same_origin_policy

http://javascript.about.com/od/reference/a/cannot.htm

Веб-сокеты HTML5, вероятно, являются путем, но пока он широко не поддерживается во всех браузерах:

http://www.html5rocks.com/en/tutorials/websockets/basics/

ИЗМЕНИТЬ:

теперь, когда вы предоставили более подробную информацию, вы можете создать поток в своем приложении, который будет проверять файл или, в идеале, таблицу, в которую ваша серверная сторона записывает в нее, когда он получает ваш javascript или (Ajax) запрос с просьбой инициировать сигнал в ваше приложение.

Есть много способов сделать это, один из самых простых и более продвинутых — это отправить сигнал вашему приложению. (отправьте сигнал с вашего сервера в приложение.) решение для базы данных имеет больше преимуществ, вы можете указать столбцы для аргументов, и у вас будет больше гибкости, как только вы обработаете запрос из этой общей таблицы, вы пометите строку.

Ниже приведен один из способов реализации вашей таблицы (обработано — это флаг, указывающий, был ли ваш сигнал уже обработан — вы также можете удалить строку после обработки):

| signal_id | аргументы | application_id | дата и время | обработано (флаг 0 или 1) |

person Mehdi Karamosly    schedule 23.04.2013
comment
Пожалуйста, смотрите мой комментарий выше о том, что я пытаюсь сделать. Поскольку приложение всегда находится на том же физическом компьютере, что и javascript, я предполагаю, что проблема связи не повлияет на меня. За ссылки спасибо, завтра почитаю. - person user2125574; 24.04.2013