Kill abfangen
-
Hallo,
würde gerne Wissen wie ich bei einem Konsolenprogramm bei Klick auf das "Schliessen Kreuz" eine Aktion ausführen kann, sozusagen OnClose()
würde mich sehr über eure Hilfe freuen !
Gruß David
-
Hi
Also ich bin mir da echt nicht sicher aber ich denke sowas geht nur mit der Win-API. Wie gesagt kann auch falsch sein ....
mfg
-
Vielleicht hilft dir SetConsoleCtrlHandler weiter.
MfG Spacelord
-
Hi,
bin jetzt soweit:
if (SetConsoleCtrlHandler(NULL,CTRL_CLOSE_EVENT)) system("del run.bak");
aber irgendwie wird der handler schon beim starten ausgeführt. Was mache ich falsch ?
-
Schau dir mal das Beispiel in der MSDN an!
MfG SideWinder
-
Ok, ich habs jetzt:
BOOL CtrlHandler(DWORD CtrlType) { switch(CtrlType) { case CTRL_CLOSE_EVENT: system("del run.bak"); return( TRUE ); case CTRL_C_EVENT: system("del run.bak"); return( TRUE ); default: return FALSE; } } //in der Schleife: while(true) { if(::GetAsyncKeyState(VK_MENU) && ::GetAsyncKeyState(VK_TAB)) { doom3 = ::FindWindow("DOOM3",0); if(doom3 == NULL) { system("del run.bak"); return 0; } else { ::ShowWindow(doom3,SW_MINIMIZE); } } SetConsoleCtrlHandler( (PHANDLER_ROUTINE) CtrlHandler, TRUE ); ::Sleep(10); }
Vielen Dank !
-
Mache ich irgendetwas in dem oben genannten Beispiel falsch ?
Muss SetConsoleCtrlHandler( (PHANDLER_ROUTINE) CtrlHandler, TRUE ); immer in einer Schleife laufen oder kann es auch einfach am Anfang einmal initialisiert werden ?
-
Einmal zu Beginn reicht aus.
MfG SideWinder
-
@Zero
Und noch was wichtiges!
system("del ...") == remove(...)Nur, dass remove() um vieles schneller und sauberer ist.
-
THX für die netten Tips !!!