Entwickler-Ecke
Windows API - Tastenkombination Strg+C an Konsolenanwendung senden
galagher - So 14.12.14 20:59
Titel: Tastenkombination Strg+C an Konsolenanwendung senden
Hallo!
Wie kann ich aus meinem Delphi-Programm die Tastenkombination Strg+C an ein Konsolenprogramm, von der ich das Fensterhandle habe, senden, so dass sie sich beendet?
Ich komme weder mit SendMessage noch mit PostMessage weiter, bestenfalls erreiche ich damit, dass der Buchstabe "c" an das Konsolenprogramm gesendet wird!
lg
galagher
Palladin007 - So 14.12.14 23:08
Würde es nicht schon helfen, einfach den Prozess zu killen?
Wenn du sowieso das erreichen willst, warum dann dieser Umweg?
galagher - Mo 15.12.14 17:10
Palladin007 hat folgendes geschrieben : |
Würde es nicht schon helfen, einfach den Prozess zu killen?
Wenn du sowieso das erreichen willst, warum dann dieser Umweg? |
Ich will es "sauber" beenden, also nicht zB. einfach abschiessen. Kannst du mir sagen, ob das hier ein ordnungsgemässes Beenden des Programms bewirkt?
Delphi-Quelltext
1:
| PostMessage(aHWND, WM_QUIT, 0, 0); |
Damit funktioniert es jedenfalls!
Narses - Mo 15.12.14 17:40
Moin!
galagher hat folgendes geschrieben : |
Kannst du mir sagen, ob das hier ein ordnungsgemässes Beenden des Programms bewirkt?
Delphi-Quelltext 1:
| PostMessage(aHWND, WM_QUIT, 0, 0); | |
Eine Konsolenanwendung, die eine MessageQueue hat und auswertet? :shock: Was es nicht alles gibt... ;)
galagher hat folgendes geschrieben : |
| Damit funktioniert es jedenfalls! |
Dann ist das auch "sauber". :zustimm:
cu
Narses
Gerd Kayser - Mo 15.12.14 18:58
galagher hat folgendes geschrieben : |
| Wie kann ich aus meinem Delphi-Programm die Tastenkombination Strg+C an ein Konsolenprogramm, von der ich das Fensterhandle habe, senden, so dass sie sich beendet? |
Man kann die Konsole auch mit dem Parameter "/c" starten. Dadurch wird die Konsole beendet, wenn das Konsolenprogramm endet. Beispiel:
galagher - Mo 15.12.14 19:26
Narses hat folgendes geschrieben : |
| Dann ist das auch "sauber". :zustimm: |
Leider musste ich feststellen, dass WM_QUIT so wie auch WM_CLOSE das Programmfenster lediglich versteckt, aber das Programm ist weiterhin im Taskmanager aufgelistet! Zur Erklärung: Es ist eSpeak.exe, ich starte es als verstecktes Fenster, da ich nur die Sprachausgabe benötige, das Fenster selbst aber nicht.
http://www.heise.de/download/990bb9d9708af461315eee3e7a369df2-1418407930-22138066.html
Gerd Kayser hat folgendes geschrieben : |
Man kann die Konsole auch mit dem Parameter "/c" starten. Dadurch wird die Konsole beendet, wenn das Konsolenprogramm endet. Beispiel:
|
Ich übergebe noch andere Parameter, /c wird da enweder als "c" ausgegeben, ignoriert oder aber das Programm beendet sich sofort wieder.
Ich habe aber eine Funktion TerminateEXE hier:
http://www.delphipraxis.net/64864-programm-durch-delphi-programm-beenden-2.html gefunden, so funktionert es, aber ist das auch sauber? :nixweiss: Ganz verstehe ich das nicht!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!