Entwickler-Ecke
Sonstiges (Delphi) - Reaktion auf ein Ereignis außerhalb des Programms
UweK - Di 26.04.22 15:59
Titel: Reaktion auf ein Ereignis außerhalb des Programms
Hallo allerseits,
Ich suche eine Möglichkeit, auf ein Ereignis zu reagieren, das außerhalb meines Programms auf dem PC passiert.
Die Situation: Ein LabView-Programm steuert Hardware, misst mit dieser etwas und schreibt das Ergebnis als Datenfile in ein Verzeichnis auf die Festplatte. Ich möchte in meinem Delphi-Hauptprogramm irgendwie eine Nachricht erhalten, dass ein neuer Datenfile erzeugt wurde, um mit diesem dann sofort automatisch weiterarbeiten zu können. Ideal wäre, dessen Namen gleich mit geliefert zu erhalten. Aber auch die reine Benachrichtigung würde schon reichen, da ich in meinem Hauptprogramm eine Liste der vorhandenen Datenfiles halten könnte. Deren Vergleich mit dem aktuellen Inhalt des Verzeichnisses würde dann den neuen Datenfile identifizieren.
Grundsätzlich könnte ich das Problem auch dadurch lösen, dass mein Hauptprogramm alle paar Sekunden von sich aus nach einem eventuellen neuen Datenfile im Verzeichnis schaut. Das finde ich aber zum einen nicht "elegant". Zum anderen würde ich auch gern das Prinzip einer solchen Botschaftsübermittlung zwischen verschiedenen Programmen verstehen, um diese Technik auch für andere Ereignisse zu nutzen, bei denen nicht unbedingt ein Datenfile geschrieben wird.
Der zuständige LabView-Programmierer kennt sich leider mit so etwas gar nicht aus und hat auch keine Zeit dafür. Er könnte auf einfache Weise aber zumindest nach jedem Schreiben eines seiner LabView-Datenfiles irgendein Hilfsprogramm (*.exe) starten, das auf dem PC liegt. Meine Idee ist nun: Ich schreibe ein winziges Delphi-Hilfsprogramm, das noch nicht einmal ein Programmfenster besitzt. Dieses hat nur die Aufgabe, eine Windows-Botschaft abzusetzen, und dann beendet es sich sofort wieder selbst. Mein Delphi-Hauptprogramm reagiert dann auf diese Botschaft. Der Vorteil dieser Konstruktion wäre, dass alles auf Delphi-Ebene passiert, so dass ich unabhängig von dem LabView-Programmmierer werde.
Könnte mir jemand Tipps geben, wie ich das anstellen kann? Oder kennt vielleicht jemand sogar irgendwo ein Beispielprogramm?
Vielen Dank für eure Hilfe.
Gruß Uwe
Ralf Jansen - Di 26.04.22 17:50
> Zum anderen würde ich auch gern das Prinzip einer solchen Botschaftsübermittlung zwischen verschiedenen Programmen verstehen
Üblicherweise kennen sich die beteiligten Programme dann sonst braucht man ja eine Art Broadcast bzw. einen Broker. Kennt die Labview Seite den dein Programm?
Ansonsten wenn du das File eh brauchst um damit was zu tun ist das Verzeichnis zu überwachen in meinen Augen nicht unelegant (die Beteiligten müßen sich dann nicht kennen, sie brauchen keinen Broker dazwischen bzw. das Filesystem ist der Broker)
Man könnte die ReadDirectoryChanges(Ex) API benutzen um über Änderungen in dem Verzeichnis informiert zu werden. Die Api hat aber seine eigene Komplexität und Fallsticke. Polling auf das Verzeichnis ist da meist einfacher.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!