2013-12-19 11 views
5

Sorry, wenn es die dumme Frage scheint. Ich konnte Windows GUI-Anwendung von PHP auf keine Weise starten. Ich habe jede Problemumgehung versucht, die ich aus den ähnlichen Fragen herausgefunden habe, aber sie haben überhaupt nicht funktioniert.PHP wie Windows GUI-Anwendung zu starten

Mein Befehl:

$cmd = 'E:\soft\Notepad++\notepad++.exe E:\text.php'; 

ich diesen Befehl durch das Fenster Command Line Tool ausführen kann und es funktionierte gut, das Notepad ++ gestartet und öffnete die GUI mit dem erwarteten Inhalt. Ich möchte das in php tun

Ich habe die Windows-Dienste geöffnet und legen Sie die Option "Dienst mit Desktop interagieren" (aktiviert) für "wampapache" -Dienst und starten Sie es auch neu.

Ich habe mit jedem der folgenden Befehle versucht:

pclose(popen("start /B $cmd", "r")); 

OR

system("start $cmd"); 

OR

exec("C:\\windows\\system32\\cmd.exe /c START " . $cmd); 

OR

$WshShell = new COM("WScript.Shell"); 
$oExec = $WshShell->Run($cmd, 0,false); 

Alle von ihnen gab mir das gleiche Ergebnis: es lief nur die Anwendung IM HINTERGRUND, konnte ich sehen, dass App-Prozess, der läuft, indem Sie auf den Task-Manager von Windows, aber die GUI nicht angezeigt.

Meine PHP-Version ist 5.4.3

Jede Hilfe sehr geschätzt wird.

+0

(Verwenden Sie den Task-Manager> Benutzer Tab Ihre Session-ID zu sehen) http://stackoverflow.com/a/1403260/426533 – Sergey

+0

möglich Duplikat [php Wie kann ich ein externes Programm läuft starten - Probleme mit dem System und exec Having] (http://stackoverflow.com/questions/1403203/php- how-do-i-Start ein-external-Programm-Lauf-mit-störungs mit -system-und) – Sergey

+0

@Sergey Er erklärte, dass er alles in diesem Q/A aufgeführten versucht. –

Antwort

3

Ich gehe davon aus, dass PHP innerhalb von Apache läuft, was wiederum ein Service ist.

Jetzt startet keine Anwendung vom Dienst wird seine GUI angezeigt, da der Dienst in einer separaten Sitzung ausgeführt wird, die keine Interaktion mit Benutzern Desktop ermöglicht.

Sehen Sie diese Antwort für weitere Informationen: Service starting a process wont show GUI C#

Allerdings kann es andere Möglichkeiten, dies zu erreichen.

  1. Erstellen Sie eine benutzerdefinierte C++ (oder gleichwertige) Anwendung, die Ihre Ziel-GUI-Anwendung für den angegebenen Benutzer erstellt. Die Antwort How can a Windows service execute a GUI application? erklärt CreateProcessAsUser() dafür. Für diese Methode müssen Benutzername und Kennwort angegeben werden.

  2. Erstellen Sie benutzerdefinierte Client-Server-Art der Anwendung. Der Server-Teil wird immer im Benutzermodus ausgeführt, in dem die GUI angezeigt werden muss. Und der Client wird von PHP aus aufgerufen. Wenn der Client aufgerufen wird, signalisiert er dem Server einen IPC-ähnlichen Event. Der Server kann die GUI-Anwendung der Reihe nach starten.

  3. Verwenden Sie die Microsoft PSEXEC utility, um den Prozess in GUI zu starten. Dies erfordert jedoch Benutzername, Passwort und Sitzungs-ID.

    psexec.exe \\REMOTE -u USER -p PASS -i SESSION -d C:\Windows\Notepad.exe

    SESSION ist die Session-ID -

    USER, PASS ist der Benutzername und das Passwort für den Benutzer

Verwandte Themen