[php + VisualBasic] Kommunikation untereinander

meisteralex

Lieutenant
Registriert
Juni 2003
Beiträge
552
Hi Leute,
wie ist der einfachste weg um PHP auf einem Apacheserver mit eine VisualBasic - Programm kommunizieren zu lassen.
z.b. das ich einem Php-Script sage, öffne CD-Rom-Laufwerk, dieses dies an das VB-Programm weitergibt und nun per Win-Api das CD-Rom Laufwerk geöffnet wird

Jemand da erfahrungen ?
 
Moin Moin,

hab zwar nicht so eine große Ahnung von dieser Materie, und auch keine Erfahrung in Bezug auf Kommunikation zwischen PHP - VB, aber als Idee hätte ich da eine Ad-Hoc Methode:

Erstelle mit PHP eine txt Datei und schreib dort z.B. nur die Zeile "Öffne CDROM" ein.
Schreibe nun ein VB Programm, welches unsichtbar (eventuell als Service?) läuft und diese Datei auf Änderung überwacht. --> Wenn sich die Datei ändert (Änderungsdatum), kannst du Sie mit dem VB Programm auslesen und entsprechende Aktionen wie zum Beispiel das CDROM öffnen ausführen.


Ist zwar keine saubere Lösung, aber eine andere Idee hätte ich jetzt auch nicht.

Gruß
cheft
 
lol, genau so habe ich es auch bisher realisiert, aber ich dachte es gibt da vielleicht eine elegantere methode

könnte mir vorstellen, dass es vielleicht über nen socket funktionieren könnte.
sprich man hat in vb nen winsock - server der auf port xxx lauscht

php sendet dann (wenn jemand mir erklären kann wie) auf dem port xxx nen befehl an localhost

dann wäre nur noch die frage, wie das vb prog wieder antwortet, denn nen lisening auf nem port in php realisiert geht wahrscheinlich nicht, oder ´?
 
Schau mal auf PHP.net unter dem Suchbegriff "sock" nach (http://php.speedbone.de/manual-lookup.php?pattern=sock), scheint mir so, als obe dir die Übersicht weiterhelfen könnte (fsockopen; socket_send ; socket_get). Hab zwar keine Ahnung ob das dann funktioniert, aber vieleicht hilft es dir weiter.
 
In groben Zügen so:

Du machst mit VB nicht eine "normale" Applikation, sondern ein COM-Objekt. Das ergibt dann keine exe, sondern eine dll.

Diese dll kannst Du dann mit PHP ansprechen, bzw. die Funktionen darin.

Beispiel:
Du programmierst die Methode OeffneCDSchublade() im VB. In PHP hast Du dann diese Methode über COM aus der dll zur verfügung. Du kannst Dann diese Method in PHP aufrufen.

ACHTUNG, das ist alles trockene Theorie ;) Ob das nun so läuft mit PHP (wie gut COM verwendet werden kann und ob Du mit VB so schnell ein COM-Lib machen kannst) weiss ich nicht.
 
ist das denn eine getestete SAche ? also schon Standard bei PHP ?
Wollte mich eben mal näher mit der Socketprogramierung beschäftigen und hab erfahren das mann sie nur experimentell reincomplimieren kann. Ist das mit den Com-Dingens genau so ?
 
Keine Ahnnugn wie getestet das ist, aber dem Link ist zu entnehmen dass es PHP-Standard ist (für Windows). Also alles im grünen Bereich diesbezüglich.

Socketprogrammierung? Also ich bin ja da auch nicht so der Held mit PHP, aber unter Sockets verstehe ich eher Kommunikation TPC und so Zeugs. Hat irgendwie nicht so recht mit CD-Schublade-öffnen zu tun!? Ausser Du willst das CD-Rom Laufwerk mit HTTP ansprechen :evillol:
 
Andere Möglichkeit:
Du startest deine VB.exe mit Parametern:
z.B.
foo.exe oeffneCDSchublade

In deinem Programm fängst du zuerst ab, ob es schon eine Instanz von deiner Exe gibt, falls ja, senst du diesem Prozess (via Prozess-Id) ein Signal z.B. SIGUSR. Dein Laufender Prozess empfängt das Signal und startet dann die gewüschte Aktion :)
 
In deinem Programm fängst du zuerst ab, ob es schon eine Instanz von deiner Exe gibt, falls ja, senst du diesem Prozess (via Prozess-Id) ein Signal z.B. SIGUSR. Dein Laufender Prozess empfängt das Signal und startet dann die gewüschte Aktion :)


also du meinst, das ich einem Prozess ein Signal senden kann ?
Ich könnte also eine programm.exe öffnen und dieser per php ein signal senden ?
wie sieht das genau aus im code ?
hast du auch ne idee wie ich von vb dann wieder nach php kommunizieren kann ?
 
Wie starte ich mit PHP ein Win-Programm?

Nein, kein Signal senden. Du startest das VB Programm mit Paremetern.
[..]
foo.exe oeffneCDSchublade
[..]
(Aber warum mit Parameter? foo.exe soll ja nur eine Aktion = oeffneCDSchublade ausführen, was für einen Nutzen hat der Parameter?)


Diese Lösung mag für Euch zwar vielleicht überschaubar sein, aber ich weiss nicht ob die was taugt. Da kommt nämlich schon die nächste Frage und damit "Problem": Wie kommuniziere ich zurück zu PHP?

Also mit COM entledigst Du Dich dieser Denkweise. Du bist wirklich synchron und nicht asynchron. Der Aufwand - wenns denn wirklich einer ist - eine COM mit VB zu machen ist vermutlich vergleichsweise klein. Das sollte doch wirklich machbar sein!?
 
Zurück
Oben