[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с внешней программой
GET
Привет, есть exe программа. Её можно запустить при помощи exec (в Windows).

Если в программе, есть:
1. поля для заполнения
2. кнопка 1
3. кнопка 2
...
10. крестик - выключение программы.

К примеру:
user posted image

Есть ли возможность управлять и контролировать все эти элементы их под Windows?

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
stump
Оператор exec запускает программу, передает в нее начальные параметры, а потом забирает массив выходящих данных. На все что происходит между чтением входных параметров и выдачей результатов работы программы РНР не влияет по той причине что управление передано исполняемой программе. В качестве программы чаще всего консольные приложения быстро выполняющиеся в памяти сервера. Если запустить калькулятор или блокнот то например блокнот загрузиться в память сервера, окно отрисоваться не сможет потому что браузер не умеет выполнять системные команды. РНР в то время пока работает блокнот будет ждать результатов работы программы которые смогут быть переданы после его завершения которое возможно путем срочного завершения процесса сервера. Не пробовал, но мне кажется что выполнив exec("notepad.exe") скрипт отвалиться по тайм-ауту.

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

_____________
Трус не играет в хокей
stump
Если одним словом отвечать на вопрос то нет. Наживать кнопки нельзя.

_____________
Трус не играет в хокей
GET
А может есть программы - имитации человека для Windows среды?

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
stump
Почитал для СОМ объектов. Их использование позволяет передавать программе сигналы и соответственно получать реакцию. Т.о используя СОМ можно нажимать на кнопки к примеру калькулятора. Того самого вин калька врядли потому что неизвестно что надо послать программе что с имитирует нажатие кнопки, а если это свое десктопное приложение то тогда можно отправлять сигналы согласно своего протокола работы программы.

В случае с php командой exec внешнее приложение выполняется изолированно и поэтому ничего такого сделать нельзя.

Если интересно почитайте про СОМ в РНР и .NET в РНР.

_____________
Трус не играет в хокей
GET
stump

Спасибо, как раз разбираюсь.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
vital
Цитата
Есть ли возможность управлять и контролировать все эти элементы их под Windows?

Цитата
А может есть программы - имитации человека для Windows среды?

Вообще нажать кнопки и все прочее в стороннем приложении - легко. Всего-то пару WinApi функций. В обычном прикладном приложении это легко реализуется(в тех же дельфях или шарпе). Но напрямую из пхп так сделать нельзя. Можно через .Net(http://php.net/manual/en/class.dotnet.php) вызвать дотнетные обертки для винапишных функции и общаться со сторонним окном(https://msdn.microsoft.com/en-us/library/aa302340.aspx - не уверен насчет актуальности конкретно этого списка, нужно поискать актуальный на сегодняшний день). Ну собственно и все. Создаете процесс не через exec(), а через дотнет, который вызовет ф-ю win api, CreateProcess() и вперед. Конкретно как нажать на кнопку на WinApi легко гуглится. Дальше ищете обертку для конкретной винапи функции в дотнете, дальше вызваете ее из пхп.

Только зачем? Нафига козе боян? Если вопрос на пхп форуме, по той причине что просто ни на чем другом никогда в жизни не программировали(а я подозреваю, что это именно так), то есть отличный повод начать тот же .net c#. Если это обусловлено какой-то производственной задачей - то решать ее надо все же не так.

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

_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
GET
vital

Программировал на MS-бейсике и на турбопаскале, знаю можно поставить делфи или vb и в принципе создать такое приложение, но нет времени(лишних денег) все это вспоминать и вообще этим всерьёз заниматься т.к. есть более значимые задачи, поэтому и решил сначала все реализовать по быстрому через php.

В принципе решил так, есть проги под Windows - автоматизаторы процессов на макросах, этого хватит.

Спасибо.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
stump
Цитата (vital @ 5.03.2015 - 05:31)
Цитата
Есть ли возможность управлять и контролировать все эти элементы их под Windows?

Цитата
А может есть программы - имитации человека для Windows среды?

Вообще нажать кнопки и все прочее в стороннем приложении - легко. Всего-то пару WinApi функций. В обычном прикладном приложении это легко реализуется(в тех же дельфях или шарпе). Но напрямую из пхп так сделать нельзя. Можно через .Net(http://php.net/manual/en/class.dotnet.php) вызвать дотнетные обертки для винапишных функции и общаться со сторонним окном(https://msdn.microsoft.com/en-us/library/aa302340.aspx - не уверен насчет актуальности конкретно этого списка, нужно поискать актуальный на сегодняшний день). Ну собственно и все. Создаете процесс не через exec(), а через дотнет, который вызовет ф-ю win api, CreateProcess() и вперед. Конкретно как нажать на кнопку на WinApi легко гуглится. Дальше ищете обертку для конкретной винапи функции в дотнете, дальше вызваете ее из пхп.

Только зачем? Нафига козе боян? Если вопрос на пхп форуме, по той причине что просто ни на чем другом никогда в жизни не программировали(а я подозреваю, что это именно так), то есть отличный повод начать тот же .net c#. Если это обусловлено какой-то производственной задачей - то решать ее надо все же не так.

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

Эх... Конечно модераторов не дождаться...

Не с моего ли сообщения ты узнал про .NET всезнающий авторитете умник? Ты хоть делфи в глаза видел прежде чем написать про него в посте? Может ты про exec больше знаешь?! Мистер Урод!

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

Ув. ТСы слушайте кого слушать ваша душа желает, только в своих постах на личности не переходите.!


 ! 

М
Бан на 3 дня за прямое оскорбление участника форума. "Мистер Урод!" - это и есть прямое оскорбление.
sergeiss


_____________
Трус не играет в хокей
vital
Ржу. Как задевает-то некоторых, что кто-то может знать по больше biggrin.gif

Цитата
Ты хоть делфи в глаза видел прежде чем написать про него в посте?

Ага. С 5й версии по BDS 2010, насмотрелся, до сих пор не могу забыть.
А еще бейсик, ц++, ассемблер и еще всякая фигня sad.gif
Цитата

Не с моего ли сообщения ты узнал про .NET

АГа, конечно biggrin.gif А еще в нем же нашел ссылки на сайт майкрософта и полное руководство к действию biggrin.gif
И вообще все мое сообщение всего лишь краткий пересказ твоего всеобъемлющего сообщения smile.gif
Цитата

Может ты про exec больше знаешь?!

O_0. Ну просвяти, что там есть такого не очевидного в функции, любопытно. Через 3 дня biggrin.gif:D
Цитата

Обычным тоном! - самым простым!

Ага, уже третья тема, которую я видел где от вас, товарищ, где заявления в духе я все знаю а вы тупые.
Где вы несете уверенно чушь, по скольку до конца не разбираетесь в вопросе, а считаете что уровень знаний = гуру. А другие потом читают и верят. Так вот, когда не знаете ТОЧНО, а вы товарищ, НЕ ЗНАЕТЕ, пишите всегда исользуя обороты МОЖЕТ БЫТЬ, Я ДУМАЮ, НАВЕРНО и прочие. А не делайте конкретных заявлений. Что бы не вводить других людей в заблуждение, которые учатся. Что и вам бы, товарищ, не помешало.

_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.