Unschliessbares Prog.
-
Hi Leute!
Könnt ihr mir sagen ob es für eine Konsolenanwendung einen Befehl gibt der das Prog. Unschliessbar macht?
Danke
mfg
Beastmaster
-
mit sicherheit nicht im standard.
-
nein
sowas gibt es bestimmt nicht
du kannst dein Program höchstens als Treiber basteln, aber dann hast du keine Ausgabe
-
Die Möglichkeit besteht gewiss.
Ich weiß das von VB. Da tritt ein Ereignis auf, wenn versucht wird das Programm zu schließen. Wenn man dieses Ereignis abfängt und das Schließen abbricht, dann ist das Programm unschließbar.
In C++ gibts sicher auch solch ein Ereignis. Vielleicht kann man dir im WinAPI-Forum besser weiterhelfen.
-
Konsolenprogramme besitzen keine Ereignisse
nur Windows Programme
-
ich wette, er meinte ein win32 konsole..
-
elise schrieb:
ich wette, er meinte ein win32 konsole..
ob DOS oder Win32 Konsole
beides haben keine Messages
DDie DOS Konsole nicht vom DOS OS
Die Win32 Konsole nicht von Windows
-
na ja
das sieht ähnlich aus...
konsole ist für mich grad nur ein fenster..
aber muss mir die konsolenapi nochmal durchschaun in kühleren zeiten.
-
elise schrieb:
na ja
das sieht ähnlich aus...
konsole ist für mich grad nur ein fenster..
aber muss mir die konsolenapi nochmal durchschaun in kühleren zeiten.
Sicher,
du kannst in einer Konsolenanwendung einen Prozess starten etc.
aber keine WindowMessages von Windows empfangen
-
@Hauptmann
Man kann doch vom Fenster einer Win32-Konsole das hWnd holen, oder?? Das müsste normalerweise reichen um das betreffende Ereignis abfangen zu können per API.An sich hast du recht, dass es bei einem reinen Konsolenprogramm oder DOS-Programm nicht geht, aber ein Konsolenprogramm läuft nun mal in einem Fenster und auf dieses Fenster hat man Zugriff, genauso wie auf jedes andere Fenster in Windows.
-
Moin, Moin...
Soweit ich weiß kann eine Konsolenanwendung eben NICHT auf das Konsolenfenster zugreifen, um z.B. die Nachrichtenfunktion durch eine eigene zu ersetzen damit man die Messages abfangen kann. Die Konsole wird ja nicht vom Programm selber geöffnet, sondern von Windows(Win 9x: Conagent.exe, Win NT/2000/XP: Cmd.exe). Daher gehört das Konsolenfenster NICHT der Anwendung sondern Windows. Und Fenster, die nicht der Anwendung gehören, sind vor Manipulationen geschützt.
Ciao...
-
Man könnte ja versuchen, die Signale abzufangen:
#include <signal.h> void catchSignal(int dummy) { signal(SIGINT, catchSignal); signal(SIGTERM, catchSignal); signal(SIGBREAK, catchSignal); signal(SIGABRT, catchSignal); } int main() { signal(SIGINT, catchSignal); signal(SIGTERM, catchSignal); signal(SIGBREAK, catchSignal); signal(SIGABRT, catchSignal); while(1) 0; return 0; }
Das macht das Programm zumindest gegen Ctrl-C, Ctrl-Break und SIGTERM immun. Gegen das kleine X rechts oben am Fenster allerdings nicht,
das schickt glaub SIGHUP, aber das ist in keinem Header definiert. Wenn du also die Nummer von SIGHUP auswendig kennst, ist alles im Lot
-
@Kal El
Aha. Also ich habe schon Programme gesehen, die auf alle möglichen Fenster Zugriff hatten. Und nicht nur den Fenstern. Das Programm konnte einem die genauen Daten über jedes Steuerelement liefern.
-
AJ schrieb:
@Kal El
Aha. Also ich habe schon Programme gesehen, die auf alle möglichen Fenster Zugriff hatten. Und nicht nur den Fenstern. Das Programm konnte einem die genauen Daten über jedes Steuerelement liefern.schon
von einer Win32 Konsolen Anwendung heraus kannst du ja die WinAPI(wie z.B. EnumatreWindow oder wie das heißt) aufrufen
du kannst nur keine WMs abfangen
-
@AJ:
Es gibt einen wesentlichen Unterschied zwischen der Abfrage von Daten eines Steuerelementes oder Fensters und der VERÄNDERUNG der Eigenschaften. Wie Hauptmann schon geschrieben hatte, ist es möglich auch mit Konsolenprogrammen die Win-API-Funktionen aufzurufen. Wenn Du aber versuchst eine Veränderung vorzunehmen, wie z.B. die CALLBACK-Funktion eines fremden Fensters zu verändern(SetWindowLong()), dann wird dieser Versuch von Windows unterbunden.
Aber vielleicht wäre es möglich eine Hook-Funktion zu nutzen?
Ciao...
-
Achso verstehe...