Bei Programmende MessageBox... auch bei Taskmanager mögl?



  • WM_QUERYENDSESSION ist dein Freund.

    Und du solltest nicht shutdown.exe benutzen, da diese Administratorenrechte benötigt.



  • case WM_QUERYENDSESSION:
    			system( "shutdown -a" );
    			visit = true;
    			printf( "%d", MessageBox( NULL, "Pleas dont forget to turn the power sockets off.", "System shut down...", MB_OK ) );
    		break;
    

    funktioniert nicht....

    Luckie schrieb:

    Und du solltest nicht shutdown.exe benutzen, da diese Administratorenrechte benötigt.

    Ich will nichts sagen, aber dieser hinweis bringt mir nichts, währst du so freundlich mir noch eine alternative zu bieten?

    Wieso funktioniert der oben gepostete code nciht?


  • Mod

    Schon mal was von der MSDN gehört?

    Applications should respect the user's intentions and return TRUE. By default, the DefWindowProc function returns TRUE for this message.

    If shutting down would corrupt the system or media that is being burned, the application can return FALSE. However, it is good practice to respect the user's actions.

    Remarks
    When an application returns TRUE for this message, it receives the WM_ENDSESSION message, regardless of how the other applications respond to the WM_QUERYENDSESSION message. Each application should return TRUE or FALSE immediately upon receiving this message, and defer any cleanup operations until it receives the WM_ENDSESSION message.



  • Ich soll false returnen, aber dann ist mein Programm weg... Oder lieg ich falsch?

    case WM_QUERYENDSESSSION: return false;
    

    so geht dass nicht... zumindest kann der Task manager das prog noch beenden.



  • lippoliv schrieb:

    Ich will nichts sagen, aber dieser hinweis bringt mir nichts, währst du so freundlich mir noch eine alternative zu bieten?

    Benutze Google.



  • Ich kann shutdown ja nur mit "shutdown -a" abbrechen... zumindest soweit ich weiß...

    Weiter runterfahren, geht anders, das weiß ich auch.



  • Benutz ExitWindowsEx -> http://msdn2.microsoft.com/en-us/library/aa376868.aspx

    damit kann man vieles basteln UND es ist dreimal besser als ein system-call...


  • Mod

    lippoliv schrieb:

    Ich soll false returnen, aber dann ist mein Programm weg... Oder lieg ich falsch?

    case WM_QUERYENDSESSSION: return false;
    

    so geht dass nicht... zumindest kann der Task manager das prog noch beenden.

    Nein! Dann ist Dein Programm nicht weg. Der Rechner fährt in diesem Fall nicht herunter. Der Shutdown Request wird abgewiesen.

    shutdown -a hat damit aber auch wirklich gar nichts zu tun.

    Was hat der Taskmanager mit diesem Programm zu tun? Das Beenden eines Programmes ist was anderes als das Herunterfahren. Was willst Du denn nun?



  • Ich wollte während des Programmierens nicht immer meinen Reechner runterfahren (15 sek) hochfahren ( 25 - 40 sek ) einloggen ( 10 sek) und alles wieder von forne, weil etwas nciht geklappt hat.

    Naja eigenttlcih kann ich es auch auf meiner VM (virtuellle maschine) testen.

    ok ich mache dann einen return false, nur ind er WndProg ne!?



  • nein, TRUE
    steht doch im MSDN-Auszug, gepostet von Martin Richter.

    lies nochmals genau den Eintrag zu
    WM_QUERYENDSESSION
    sowie
    ExitWindowsEx()

    und dann gibst du vorerst nur eine MessageBox aus beim testen.
    du musst schon beim testen/debuggen dein hirn anstrengen, sonst wird das nix.


Anmelden zum Antworten