Mein Chef hat eine Windows-Anwendung, die er schrieb. Es ist keine Windows-Konsolenanwendung, sondern eine Windows-GUI-Anwendung. Wir haben natürlich den Quellcode, aber er möchte nicht, dass es eine Konsolen-App ist. Er möchte, dass es eine reguläre GUI-Anwendung bleibt.Ausgabe von einer Windows-Anwendung mit PHP
Die Sache ist, er will in der Lage sein, es von PHP zu nennen, es Parameter übergeben, und die Anwendung gibt Informationen an das aufrufende PHP-Skript zurück. Ich kann problemlos Windows-Konsolenanwendungen aufrufen und die Ausgabe lesen. Ich kann sogar VBS-Skripte aufrufen und die Ausgabe von ihnen erhalten.
Aber wir sind ratlos darüber, wie man eine normale Windows-Anwendung zur Ausgabe von Daten an ein aufrufendes PHP-Skript erhält, ohne die Ausgabe in eine Textdatei zu schreiben und sie in PHP zu lesen.
Hat jemand das schaffen können? Wenn das so ist, wie?
Vielen Dank im Voraus.
Amy
Schnitt hinzuzufügen: Offenbar legte der Chef diesen Code in seiner Anwendung:
BOOL bConsole = AllocConsole();
HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
DWORD dwCharsWritten = 0;
string sS3Path = sCommandLine.substr(sCommandLine.find("S3://") + 5);
string sMessage = "S3 Path: " + sS3Path;
BOOL bWritten = WriteConsole(hOutput, sMessage.c_str(), sMessage.size(), &dwCharsWritten, NULL);
Aber PHP nicht die Informationen ist zu sehen, dass er auf diese Konsole schreibt. Wir haben exec und shell_exec vergeblich versucht.
Anscheinend ist nicht trivial, da die Wahl eine App als GUI-Anwendung oder als Konsolenanwendung ausgeführt werden bei Ihrer Anwendung Build-Zeit, soweit sie nicht zur Laufzeit - Sie können * wirklich * Wählen Sie basierend auf einem Befehlszeilenschalter. Siehe: http://stackoverflow.com/questions/54536/win32-gui-app-that-writes-usage-text-to-stdout-when-invoked-as-app-exe-help –
Wie gesagt, benehmen Sie sich wie ... Sie können Informationen auch dann an die Standardausgabe weiterleiten, wenn es sich um eine GUI-Anwendung handelt. Das Konsolenfenster wird nicht angezeigt, aber andere Programme können die Informationen weiterhin lesen. –