Общий ответ: передайте указатель на вещь, которую вы хотите изменить.
В этом случае это будет указатель на указатель, который вы хотите изменить.
Какое поведение вы ожидаете? Вызов system ('notepad')
работает отлично - он просто не отображает графический интерфейс. Он работает в фоновом режиме, и PHP сидит там терпеливо, ожидая, когда блокнот закроется (и только продолжит, если вы убьете блокнот из списка процессов).
Если вы ожидаете, что он появится в графическом интерфейсе, Я абсолютно уверен, что вы не можете этого сделать. ;) Параметр может состоять в том, чтобы выписать пакетный скрипт ( file_put_contents ('runme.bat', 'notepad hello.txt')
) и поставить этот пакетный скрипт в очередь (с планировщиком Windows или любым другим cron -эквивалент находится на Windows), чтобы работать в асинхронном режиме (и очистить себя в конце).
Очень поздний ответ, но я сам работал над этим и обнаружил, что действительно можно запустить GUI-программу из PHP с сервера Apache в Windows XP.
Теперь, используя следующий код, вы можете создавать процессы пользовательского интерфейса из PHP. В первом фрагменте кода сценарий не будет ждать закрытия приложения; второй фрагмент ждет закрытия программы перед продолжением (блокирование).
Не дожидайтесь приложения:
pclose (popen ("start / B notepad.exe" ,
Ожидать применения:
system ('start notepad.exe');
Это было протестировано в Windows XP. Я не пробовал его ни в каких других версиях Windows, ваш размер может отличаться.
Боковое примечание. В моей конкретной установке я использовал другую опцию на вкладке Вход в службу - Apache работал как чтобы он мог получить доступ к нескольким сетевым ресурсам с разрешениями пользователя домена. Этот флажок недоступен для этого параметра, только если служба работает как локальная система. После обширных исследований я обнаружил, что нет единого способа, чтобы одна служба взаимодействовала с текущим рабочим столом и использовала учетные данные конкретного пользователя. Это одно или другое предложение, предлагаемое средство состоит в том, чтобы разделить вашу службу на два компонента: один, который использует учетные записи пользовательской учетной записи и тот, который взаимодействует с рабочим столом. Не очень практично, когда служба, о которой вы говорите, является веб-сервером. Эта заметка, вероятно, довольно специфична для моего варианта использования, но я хотел бы выразить это здесь, если я могу спасти кого-то еще от разочарования в будущем.
Еще один супер поздний ответ, но это появляется в Google при поиске «php run gui program» ...
Я смог запустить графическое приложение в Windows 8.1, выполнив, выполнив и удаление запланированной задачи:
shell_exec ('SCHTASKS / F / Create / TN _notepad / TR "notepad.exe" / SC DAILY / RU INTERACTIVE'); shell_exec ('SCHTASKS / RUN / TN "_notepad"'); shell_exec ('SCHTASKS / DELETE / TN "_notepad" / F');