2016-11-21 2 views
0

Ich bin gespannt, wie dies zu erreichen ist. Ich bin mir nicht einmal sicher, was ich googeln soll.PHP senden Befehl an C++ Windows-Anwendung

Wenn ich einen Webserver habe und ich eine PHP-Seite mit einer Schaltfläche erstellen möchte. Wenn diese Schaltfläche angeklickt wird, führt meine C++ - Anwendung, die auf einem Remote-Computer ausgeführt wird, eine Funktion aus.

Was wäre der einfachste Weg, dies zu erreichen? Gibt es dafür bereits eine Bibliothek? Wenn nicht, was sollte ich googeln, um damit anzufangen?

Danke.

+0

Ist der Remote-Computer auf dem Server ausgeführt oder separat? –

+0

Google für: 'Windows Communication Foundation', 'dcom' und' Win32-Startprozess auf Remotecomputer' – selbie

+0

Was ist, wenn die Anwendung in C geschrieben ist? – user4581301

Antwort

1

Verwenden Sie PHP-Backticks

http://php.net/manual/de/language.operators.execution.php

Sie können eine beliebige ausführbare Datei aufrufen und deren Ausgabe in einer Variablen nehmen.

Eg.

$ result = ` mycppapp.exe `

Grüße

+0

Ich denke, die Frage war nicht zum Starten, sondern eher zum Steuern der bereits laufenden App? Plus in der ursprünglichen Frage sagt es eindeutig, dass Windows-Host remote ist. Backticks sind also keine Lösung. –

+0

Ich bin mir nicht sicher, dass das für mich funktionieren würde. Ich möchte, dass Code/Funktion in einer bereits laufenden Anwendung ausgeführt wird. Nicht um einen brandneuen Prozess zu starten. – mocode9

+0

Der beste Weg wäre, einen Listener an einem bestimmten Port einzurichten. Dann sende eine Anfrage mit PHP über diesen Port. Dies löst dann die Funktion aus. Es scheint nette Addons wie dieses http: //www.sfml-dev zu geben.org/die scheinen ein solches Unterfangen zu vereinfachen – Daidon

0

Es hängt etwas von Ihrem C++ App.
Aber Grundidee ist so.
In Ihrem HTML definieren Sie eine Schaltfläche, wenn Sie auf klicken - Sie starten AJAX GET oder POST zu Ihrem PHP-Programm (es gibt Variationen möglich, Sie können es einfach über Formulare tun).
Der Reihe nach Ihr php kann Verbindung zu entferntem Windows-Wirt beginnen und dieses ist, wo es schwierig wird.

  • Kann Ihre Windows C++ App Befehle über das Netzwerk empfangen? Mit anderen Worten, hat es eine REST-API? Oder andere Mittel, um es über TCP zu steuern?
  • Und was genau möchten Sie tun? Einfach diese App starten oder irgendwie kontrollieren?

Wenn es REST API hat - dann ist es einfach. Sie können mit etwas so einfach wie php curl beginnen, um REST-Nachrichten zu senden. Wenn es keine Fernsteuerungs-API und nur CLI hat, dann müssten Sie anfangen, Remote-Powershell zu verwenden, die ich annehmen würde.
So etwas wie dieses powershell - execute cmdlet remotely with php

+0

Rest war abhängig von cpprest DLL, so dass mein Client sich nicht darauf freute, dem Projekt weitere DLLs hinzuzufügen. Aber ja, meine C++ Anwendung hat Zugriff auf ein Netzwerk. Das Ding, ich weiß nicht, wie man es mit einer PHP-Seite verbinden lässt. Vielleicht, wenn der Button auf der PHP-Seite geklickt wird, könnte es eine Variable auf eine andere PHP-Seite schreiben. Dann habe ich meine C++ - Anwendung immer wieder mit dieser Seite verbinden und nach der Variable suchen. Wenn es wahr ist, hat es meine Funktion erfüllt. Wäre das gut oder gibt es eine bessere Methode? – mocode9

+0

Wenn Sie in Ihrer C++ App auf einen Socket zugreifen können, können Sie Nachrichten über das Netzwerk empfangen. Ich denke nicht, dass ein anderer Weg eine gute Lösung wäre, da Sie die Server-Seite ständig nach Ereignissen abfragen würden, die vielleicht gar nicht da sind. Sie können eine einfache Mock-App in C++ und in PHP erstellen. C++ hört an einem bestimmten Port nach Nachrichten und PHP würde solche Nachrichten senden. –