[C++] Strg + C an Konsolenanwendung

counterroot

Lt. Commander
Registriert
Feb. 2005
Beiträge
1.633
Hallo Leute,

ich habe eine Application die zwei Threads startet.

Der eine Thread beinhaltet Programm das eine Endlosschleife ausführt,
der andere Thread wartet 15 Sekunden und killt dann den Prozess der Endlosschleife.

Leider darf der Prozess nicht gekillt werden sondern muss mit einem Strg + C, bzw adäquat beendet werden, da sonst aufgezeichnete daten vorloren gehen.

Jemand eine Idee wie ich an einen Prozess ein Strg + C schicken kann?
pmb µatthias
 
Bist du dir sicher dass es dafür keine elegantere Lösung gibt? oO

Und bitte wirf Prozesse und Threads nicht so durcheinander, zumindest kommt es mir so vor... hast du mehrere Prozesse oder nur mehrere Threads?
 
AScii?

HEX 03
 
oha... =)
2 Thread im Aufrufprogramm (eigenständige Exe)
von denen jeweils zwei Prozesse aufgerufen werden (eine Exe für den KillProzess-Aufruf, eine Exe für die Schleife)

keine Ahnung ob es elegantere Lösungen gibt. So hats auf jeden fall händisch geklappt.
Wollte das jedoch automatisiert haben.

Wie übergebe ich diesen Hex 03 wert an den Prozess?
Ich würde mir das so vorstellen (sprachlich umgesetzt):

GetProcessid("program.exe",ProcessidVariable)
SendKey(Hex03,ProcessidVariable)

pmb µatthias

P.S.: TERM-Signal sagt mir von LInux was. Bin leider in dem Fall auf Windows angewiesen. Unter Linux wäre das ganze weniger ein problem ;)
 
Zuletzt bearbeitet:
Wenn du dich unter Linux/Unix bewegen solltest, dann schau dir mal die Signals an. Damit könntest du eine Behandlung des Term-Signals implementieren, um auf einen Abbruch reagieren zu können.

Über Details bitte in einem Buch nachlesen oder googlen ...
 
Wie gesagt leider kein Linux.
Aber das merke ich mir mal für weitere Projekte.
danke für den Hinweis
gruß µatthias

Wie schauts da mit Windows (XP/Server 2003) aus?
pmb µatthias
 
Ach so, der eine Thread ruft ein externes Programm auf, das soll dann beendet werden?

Kann es sein,d ass man vielleicht
SendKey("^c",ProcessIdValue)
machen muss?
 
ich probiers aus und berichte in diesem post.
bis gleich
µatthias

//EDIT: 2008-08-18_21-57: ich finde keine headerfile in der SendKey() als funktion bekannt ist. pmb
grade gefunden: ?
Code:
>>Is there an equivalent to SendKeys.Send in C++? 

No. C++ language knows nothing (other than what it inherited from C language in stdio.h) about the keyboard because its os specific. You have to use os-specific api function calls to send them one character at a time like jamthwee suggested.

//EDIT: 2008-08-18_22-19:
versuche gerade das hier zu lösen http://msdn.microsoft.com/en-us/library/ms646304(VS.85).aspx (mit windows eigenen boardmitteln) - ansonsten eventuell das hier: http://www.codeproject.com/KB/cpp/sendkeys_cpp_Article.aspx
 
Zuletzt bearbeitet:
Zurück
Oben