PC Herunterfahren in einer bestimmten anzahl von Sekunden



  • och man, ich hab doch vorhin schon geschrieben, dass du EWX_FORCE mit angeben sollst. sonst fährt das prog den rechner erst runter, wenn alle programme geschlossen sind... also:

    ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0);
    


  • Geht noch immer nicht ...........
    das einzigste was passiert das ist das dass Programm ausgeht.

    #include <windows.h>
    #include <iostream> 
    using namespace std; 
    
    int start(); 
    
    int main() 
    
    { 
    start(); 
    getchar(); 
    } 
    
    //--------------------------------------------------------------------------- 
    
        start() 
        { 
            int sec; 
    
            cout<<"Programm zum PC Herunterfahren in einer bestimmten zeit\n"; 
            cout<<"\n"; 
    
            cout<<"Anzahl der Sekunden eingeben wann der PC herunterfahren soll: \n"; 
            cin>>sec; 
    
            Sleep(sec * 1000); 
            ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0);
    
            return 0;
        }
    


  • Du solltest
    InitiateSystemShutdown
    verwenden!



  • Und beachte, dass Du vorher die nötigen Rechte Dir verschaffen musst!

    http://msdn2.microsoft.com/en-us/library/aa376861



  • In der MSDN steht auch warum ...

    Windows NT: To shut down or restart the system, the calling process must use theAdjustTokenPrivileges function to enable the SE_SHUTDOWN_NAME privilege. For more information about security privileges, seePrivileges.

    Windows 95: ExitWindowEx does not work from a console application, as it does on Windows NT.

    Such einfach mal bei google nach ExitWindowEx da gibt es schon haufen weise fertige funktionen die das mit den Rechten usw. alles machen. Zu hause hab ich auch welche bin aber leider auf Arbeit.

    schirrmie



  • ok thx



  • Hab mal was zusammengefrickelt.. obs so funzt, weiß ich nicht...

    HANDLE hToken;
        TOKEN_PRIVILEGES tPrivs;
    
        // Token auf den aktuellen Prozess ermitteln
        OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES+TOKEN_QUERY, &hToken);
    
        // Ermitteln der eindeutigen ID der SE_SHUTDOWN_PRIVILEGES
        LookupPrivilegeValue(NULL, "SeShutdownPrivilege", &tPrivs.Privileges[0].Luid);
    
        // Setzen des Privilegs
        tPrivs.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
        tPrivs.PrivilegeCount = 1;
        AdjustTokenPrivileges(hToken, FALSE, &tPrivs, 0, (PTOKEN_PRIVILEGES)NULL, 0);
    
        // Warten
        Sleep(sec * 1000);
    
        // Shutdown erzwingen
        ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0);
    




  • Mr Evil schrieb:

    ShutDown 2

    Gabs das nicht mal bei Windows?



  • windows selber bietet auch eine shutdown exe - aber diese ist nicht so konfortabel
    die von mir bietet ja drei moeglichkeiten wann etwas geschehen soll
    zu einem bestimmten zeitpunkt, nach einen countdown prinzip, oder wenn die prozessorlast fuer N zeit unter N prozent bleibt
    zudem kann man halt runterfahren, oder neustarten, ausloggen, monitor aus, ruhezustand
    und beim minimieren verschwindets ins tray - mir waere kein windows tool bekannt das das alles auch so bietet {zudem in einer einfach zu bedienenden oberflaeche}


Anmelden zum Antworten