Hot Positions, Cool Company! NeoGames
×Закрыть

Управление exe программой через сайт

Всем доброго времени суток.

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

Что для этого нужно, какие есть варианты?

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Конечно можно.
Судя по тому как задан вопрос ты не в курсе как можно этой программой управлять вообще, кроме как мышью и клавиатурой.

Как уже советовали, написать какой то web сервис который будет управлять програмой.

Первое что приходит в голову, www.autoitscript.com/site/autoit научить его делать в UI вашей проги какие то действия, и потом потом запускать их из вашего веб приложения.

ПС: в гугле вот еще что нашлось github.com/...​nd-mapping-to-AutoItX-API

Это в корне не верный подход. Твоя программа должна содержать веб сервис. Если программа не твоя — то нужно сделать сервис — прослойку.

Можно, запросами на кастомную url схему.
Если используем WIX для сборки .msi, добавляем в реестр инфу о том, что наша апка может хендлить запросы по заданной схеме:

RegistryKey Root="HKCR" Key="myscheme"
RegistryValue Type="string" Name="URL Protocol" Value="" 
/RegistryValue
RegistryValue Type="string" Value="URL: My app URL scheme protocol" /
RegistryValue Id="RegistryValueLocalPath" Key="shell\open\command" Type="string" Value="[APPLICATIONFOLDER]$(var.MyApp.TargetFileName) %1" /
/RegistryKey

При исполнении запроса на myscheme://DoSomething?arg1=blabla,arg2=blabla будет запущен MyApp.exe, который примет урлу в качестве StartupEventArgs в Application_Startup. Парсим урлу => профит.

Вариант для macOS:

NSAppleEventManager.shared().setEventHandler(self,
andSelector: #selector(AppDelegate.handleAppleEvent(_:withReplyEvent:)),
forEventClass: AEEventClass(kInternetEventClass),
andEventID: AEEventID(kAEGetURL))

func handleAppleEvent(_ event: NSAppleEventDescriptor, withReplyEvent replyEvent: NSAppleEventDescriptor) {
guard let URLString = event.paramDescriptor(forKeyword: AEKeyword(keyDirectObject))?.stringValue
else { return }
}

В Info > URL Types воркспейса нужно добавить свою схему.
Web Sockets, REST как бы тоже вариант.

Делал когда-то проект на Arduino с веб-интерфейсом. Мне понравилось решение управления через Dropbox-файлы.

Один сервер, управляющий Arduino, мониторил изменения файла команд (для изменения состояния устройства) и добавлял показания в другой файл из этой же папки.

Другой сервер с веб-интерфейсом следил за файлом показаний (для отображения графика) и при необходимости добавлял файл команд в ту же папку Dropbox для изменения состояния устройства (через веб-страницу).

geektimes.ru/post/255306

Нет, потому что благодаря этому решению мне не надо было иметь выделенный айпи для управления своим устройством. Устройство в одном доме, веб-интерфейс с управлением в другом.

Кроме того, благодаря Dropbox, все скрипты управляли файлами, а не сокетами, а это очень сильно упрощает программирование.

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

Правильно — это чтобы сама exe-программа давала возможности собой управлять, через веб или как-то ещё. Или была другая программа, которая обслуживает веб, имела внутри себя скрипты для управления твоим exe и прочие кошерные вещи.

Что для этого нужно? Образование, сэр.

Сколько деталей в вопросе... Ну так смотря какая программа, есть ли доступ к исходникам и что такое «возможность управлять»...

Может речь об управлении через браузер? Т.е тупо какой то TeamViewer Web Connector?
Сомневаюсь что речь о программировании, но все же:
-Тупой запуск процесса через командую строку, если она есть
-Запуск дочернего процесса и перехват потока ввода-вывода, скорее всего с node js
-Добавление функционала REST web сервера прямо в приложение, и делать запросы к нему с бекенда сайта, на чем бы там он ни был.
— IPC
-интеграция PHP интерпретатора в приложение и прокидывание туда его API, слишком муторно, но до node такое делал, если надо был real-time и скриптовый язык, чтобы на native всю логику не писать, уже наверно не актуально.
Если программа GUI, консоли нет, никакого API нет, доступа к исходникам нет, ну то остается сделать программу-мост c REST сервером для имитирования ввода пользователя через сообщения WM_ для GUI и сценарии... или сжатие и отправка графического контекста его окна в виде картинок и слушание команд, но это велосипед-аналог TeamViewer для веб...

Добавление функционала REST web сервера прямо в приложение, и делать запросы к нему с бекенда сайта, на чем бы там он ни был

Можно просто допилить API веб-сервера в программу с управляющим функционалом, и всё.

API веб-сервера

Эм... если API, тогда это и будет REST(или другой аналог) web server, если туда сразу и фронт запихивать то выйдет никакой не API, а UI :) Разве что там бандл фронта на индексе статикой выплевывается, и все тот же REST* бек...

У мене колись товариш із 16-бітної консольної програмки під дос, написаної в 90х на турбо паскалі робив вебсервіс. Суть така, там якесь підприємство було, там юзали прогу для розрахунків, а потім залізо здохло і підприємство виросло. Коротше кажучи, Centos+DosBox+PHP+MySQL ))) Воно набивало в базу, потім крон брав, створював порожнє середовище з досбоксом і темпові файлики, запускало цю всю фігню, дампило вивід у файл, парсило і писало в базу. Каже, вже пару років стабільно паше.

У тебя exe где, на сервере? Гугли CGI, но я бы делал через обмен сигналами/сообщениями. Если на клиенте — гугли в сторону API флеша. Только ему, теоретически, может что-то такое позволяться, но и то вряд ли. Настройками безопасности, скорее всего, закрыто.
Вообще не правильно вопрос задан. Сформулируйте ЧТО вам нужно, а не КАК вы думаете этого достичь. Часто такой подход как раз и приводит к тому что делали-делали, а получили не то что хотели.

Ты так ничего и не понял за время, проведённое в девелопменте? Это твоя задача, рассказать что ему надо, и грамотно сформулировать его вопрос.

Я не сейлз. Так что, возможно, действительно

так ничего и не понял

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

Заказчик зачастую и сам толком не знает, что ему надо. Без вычислительных систем и проблем никаких не было, как например в каменном веке. Это решения проблем порождают новые проблемы, в этом и есть вся суть прогресса.

Никаких, всё самописное.

От 5000$ за внедрение.

Подписаться на комментарии