Eine API Nachricht mit einem Konsolenprogramm empfangen???
-
Nur die richtige Thread-ID zu bekommen wird schwierig denk ich.
-
Was hast du überhaupt vor? Willst du nur im Konsolenprogramm auf einen Click, auf dieses reagieren?
-
Vielen Dank erstmal...
Das Problem ist halt, dass ich schon ein bereits vorhandenes Projekt habe, und es garnicht so klein ist. Das Programm macht nix anderes als mit einem USB-Treiber zu kommunizieren. In der Zeit ist es mehr oder weniger eingefroren. Die GUI, die dieses Program aufruft, muss die möglichkeit haben es abzubrechen. Aber nicht einfach abschießen, sondern kontrolliertes beenden, deswegen wollte ich einfach eine Nachricht hinschicken, und in der Haupt-Whileschleife auf diese Nachricht reagieren.
Das mit PostThreadMessage werde ich mal ausprobieren...
-
ansonsten kann man unter windows XP bei createwindows im parent parameter HWND_MESSAGE angeben, dann wirds ein unsichtbares fenster, welches nur nachrichten empfängt
-
otze schrieb:
ansonsten kann man unter windows XP bei createwindows im parent parameter HWND_MESSAGE angeben, dann wirds ein unsichtbares fenster, welches nur nachrichten empfängt
Kannst du das bitte genauer erläutern? Das Programm kommt nur auf Win2K und XP zum einsatz, das das wenster nicht sichtbar ist, kann man sicher auch anders machen, für win2k.
-
HWND_MESSAGE ist en bissl anders, das fenster ist zb nicht ohne weiteres enumerierbar, etc.
wenn dir das egal ist, reicht dir ein fesnter, das nicht visible ist.
-
Ist eigentlich egal. Hauptsache ich kann es nicht sehen und ich muß nicht viele veränderungen am vorhandenen Projekt machen. Wie gehe ich da am besten vor?
Das Projekt scheint ein stinknormalles Consollenprojekt zu sein...
-
Dazu würde sich ein Event besonders gut eignen:
- im Programm ein Event erstellen
- das Consolenprogramm starten
- im Consolenprogramm das Event öffnen
- während der Kommunikation mit dem USB-Gerät immermal prüfen ob das Event signalisiert ist
- a) Event ist signalisiert -> Consolenprogramm beendet sich
b) Event ist nicht signalisiert -> weiter mit 4
Wie man sieht reicht es nun aus im Hauptprogramm das Event auf den Signalzustand zu setzten, um das Konsolenprogramm zu beenden
(Evtl. musst du ein paar "Security_Attributes" so setzten, dass der Konsolenprozess auch das event öffnen kann)
Die nötigen Funktionen findest du hier: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/synchronization_functions.asp (unter "Event Functions" und "Wait Functions")
-
Die idee ist nicht schlecht... Kann ich so ein Event auch mit WinAPI Calls setzen?
-
