String an programm senden
-
- Beiträge: 369
- Registriert: Sa 3. Mär 2007, 16:03
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Bramsche (Emsland)
String an programm senden
hallo!
ich möchte gerne meinen mediaplayer so erweitern, das er erkennt, ob er scho leuft, und wenn er schon leuft, soll er dem schon laufenden informationen senden, und sich danach beenden, sprich das man ihn nur einmal starten kann, und der dann die informatione übernimmt.
das prob ist, das soll unter linux und unter windwos funktionieren
wie kann man das machen?
ich möchte gerne meinen mediaplayer so erweitern, das er erkennt, ob er scho leuft, und wenn er schon leuft, soll er dem schon laufenden informationen senden, und sich danach beenden, sprich das man ihn nur einmal starten kann, und der dann die informatione übernimmt.
das prob ist, das soll unter linux und unter windwos funktionieren
wie kann man das machen?
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
ich habe einen Code dazu einige Zeit in einem Projekt von mir verwendet, müsste ich aber erst wieder rauß suchen.
Und ich weiß nicht ob er unter Linx läuft.
Ich denke der Beste weg für dich währe folgender(wollte ich auch schon immer mal ausprobieren).
Du erstellt eine tmp Datei, die du beim Beenden wieder löscht.
Dort schreibt jede Instant einfach die Parameter rein die übergeben wurde.
Dann musst das Zweite Programm nur noch eine Message senden, wie das geht weiß ich leider nicht. Sobald es die Message sendet und von der 1
Instant aufgefangen wurde, kann die Datei ausgelesen werden, und die Infos in der Datei gelöscht wurden. und die zweite Instant kann beendet werden.
Das dürfte aufjedenfall Plattformübergreifend sein und überall Klappen.
Es gibt da mit Sicherheit noch einen anderen Weg. Aber das ist wie ich finde der einfachste. Evlt. gelingt es auch einen Pointer mit den Infos in die nachricht zu überbringen bzw. als Stream zu senden. Der Vorteil: Du müsstest in keiner TMP Datei was rein schreiben. Evlt. nur eine anlegen.
Soweit ich noch weiß, basiert der Code den ich verwendet zum Teil auf diese Idee....
Als Stichpunkte kann ich hier nur folgende nennen:
- Botschaften Senden und Emfangen per SendMessage(glaube ich)
- Prüfen ob es schon eine Instant gibt(dazu gibt es unter http://www.delphipraxis.net" onclick="window.open(this.href);return false; in der Code LIB einige Beispiele evlt. laufen sie auch unter Linux).
Und ich weiß nicht ob er unter Linx läuft.
Ich denke der Beste weg für dich währe folgender(wollte ich auch schon immer mal ausprobieren).
Du erstellt eine tmp Datei, die du beim Beenden wieder löscht.
Dort schreibt jede Instant einfach die Parameter rein die übergeben wurde.
Dann musst das Zweite Programm nur noch eine Message senden, wie das geht weiß ich leider nicht. Sobald es die Message sendet und von der 1
Instant aufgefangen wurde, kann die Datei ausgelesen werden, und die Infos in der Datei gelöscht wurden. und die zweite Instant kann beendet werden.
Das dürfte aufjedenfall Plattformübergreifend sein und überall Klappen.
Es gibt da mit Sicherheit noch einen anderen Weg. Aber das ist wie ich finde der einfachste. Evlt. gelingt es auch einen Pointer mit den Infos in die nachricht zu überbringen bzw. als Stream zu senden. Der Vorteil: Du müsstest in keiner TMP Datei was rein schreiben. Evlt. nur eine anlegen.
Soweit ich noch weiß, basiert der Code den ich verwendet zum Teil auf diese Idee....
Als Stichpunkte kann ich hier nur folgende nennen:
- Botschaften Senden und Emfangen per SendMessage(glaube ich)
- Prüfen ob es schon eine Instant gibt(dazu gibt es unter http://www.delphipraxis.net" onclick="window.open(this.href);return false; in der Code LIB einige Beispiele evlt. laufen sie auch unter Linux).
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 958
- Registriert: Mo 11. Sep 2006, 22:56
Meinst du sowas?
http://wiki.lazarus.freepascal.org/UniqueInstance" onclick="window.open(this.href);return false;
http://wiki.lazarus.freepascal.org/UniqueInstance" onclick="window.open(this.href);return false;
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Was das senden angeht...wenns nur strings sind, schau dir mal IPC an, geht relativ einfach und unkompliziert.
http://www.freepascal.org/docs-html/fcl ... leipc.html" onclick="window.open(this.href);return false;
http://www.freepascal.org/docs-html/fcl ... leipc.html" onclick="window.open(this.href);return false;
Johannes
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
viele Wege führen nach Rom
aber wos geht, bevorzuge ich es, irgendwelche Temporären Dateien zu umgehen.
ICS hat nicht viel mit Netzwerk zu tun, man kann es keinesfalls mit TCP/IP oder ähnlichen vergleichen, sondern es wird nur eine einweg-Verbingung zwischen zwei laufenden Exen auf einer Maschiene aufgebaut über die beliebige STrings gesendet und über OnMessage ausgewertet werden können um eben beliebige Steuersignale festzulegen.

ICS hat nicht viel mit Netzwerk zu tun, man kann es keinesfalls mit TCP/IP oder ähnlichen vergleichen, sondern es wird nur eine einweg-Verbingung zwischen zwei laufenden Exen auf einer Maschiene aufgebaut über die beliebige STrings gesendet und über OnMessage ausgewertet werden können um eben beliebige Steuersignale festzulegen.
Johannes