Autor Beitrag
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: So 14.12.14 21:59 
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

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Mo 15.12.14 00:08 
Würde es nicht schon helfen, einfach den Prozess zu killen?
Wenn du sowieso das erreichen willst, warum dann dieser Umweg?
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Mo 15.12.14 18:10 
user profile iconPalladin007 hat folgendes geschrieben Zum zitierten Posting springen:
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?
ausblenden Delphi-Quelltext
1:
PostMessage(aHWND, WM_QUIT, 00);					

Damit funktioniert es jedenfalls!

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 15.12.14 18:40 
Moin!

user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
Kannst du mir sagen, ob das hier ein ordnungsgemässes Beenden des Programms bewirkt?
ausblenden Delphi-Quelltext
1:
PostMessage(aHWND, WM_QUIT, 00);					
Eine Konsolenanwendung, die eine MessageQueue hat und auswertet? :shock: Was es nicht alles gibt... ;)

user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
Damit funktioniert es jedenfalls!
Dann ist das auch "sauber". :zustimm:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: Mo 15.12.14 19:58 
user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
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:
ausblenden Delphi-Quelltext
1:
cmd /c dir c:\*.* /s					
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Mo 15.12.14 20:26 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
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.
www.heise.de/downloa...407930-22138066.html

user profile iconGerd Kayser hat folgendes geschrieben Zum zitierten Posting springen:
Man kann die Konsole auch mit dem Parameter "/c" starten. Dadurch wird die Konsole beendet, wenn das Konsolenprogramm endet. Beispiel:
ausblenden Delphi-Quelltext
1:
cmd /c dir c:\*.* /s					

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: www.delphipraxis.net...gramm-beenden-2.html gefunden, so funktionert es, aber ist das auch sauber? :nixweiss: Ganz verstehe ich das nicht!

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!