C++ Befehl den Computer auszuschalten
-
Gibt es einen Befehl in C++ der den Computer ausschaltet?
Danke im Voraus!
-
du musst nen Befehl nehmen , der die Anwendung "shutdown" aufruft
-
Ich hab keine ahnung wie du das meinst. Ich lerne c++ noch nicht lange.
-
@imson _muss_ ? -> nein, es geht auch so:
// Runterfahren des Rechners // #include <iostream> #include <windows.h> #include "shutdown_rechte.h" using std::cout; using std::endl; using std::cin; int main(int argc, char * argv[]) { for(unsigned int index=0;index<(unsigned)argc;index++) if(argv[index][0] == '-') { switch (argv[index][1]) { case 's': SetCurrentPrivilege( SE_SHUTDOWN_NAME, TRUE ); ExitWindowsEx(8,0); // Runterfahren exit(0); break; case 'r': SetCurrentPrivilege( SE_SHUTDOWN_NAME, TRUE ); ExitWindowsEx(2,0); // Neustart exit(0); break; } } // Setzen der Berechtigungen zum Neustart / Herunterfahren des Systems // die Funktion wird in der 'shutdown_rechte.h' abgearbeitet SetCurrentPrivilege( SE_SHUTDOWN_NAME, TRUE ); // Menü zur Auswahl der Art des Herunterfahrens char auswahl; do{ cout << "Runterfahren des Systems, bitte machen Sie Ihre Angaben " << endl; cout << "--------------------------------------------------------" << endl; cout << "Auswahl: " << endl; cout << "1 Abmelden" << endl; // 0x00000000 cout << "2 Runterfahren (nicht Ausschalten)" << endl; // 0x00000001 cout << "3 Neustart" << endl; // 0x00000002 cout << "4 Schneller Neustart" << endl; // 0x00000004 cout << "5 Runterfahren und Ausschalten" << endl; // 0x00000008 cout << "6 Maustasten vertauschen" << endl; cout << "7 Maustasten wiederherstellen" << endl; cout << "9 Hilfe" << endl; cout << "0 Abbrechen" << endl; cout << "----------------------------------" << endl; cout << "Treffen Sie Ihre Auswahl: "; cin >> auswahl; switch(auswahl) { case '1': ExitWindowsEx(0,0); // Abmelden break; case '2': ExitWindowsEx(1,0); // Runterfahren und nicht ausschalten break; case '3': ExitWindowsEx(2,0); // Neustart break; case '4': ExitWindowsEx(4,0); // Schneller Neustart break; case '5': ExitWindowsEx(8,0); // Ausschalten break; case '6': SwapMouseButton(1); break; case '7': SwapMouseButton(0); break; case '9': cout << "\nshutdown.exe -s Herunterfahren" << endl; cout << "shutdown.exe -r Neustart\n" << endl; break; case '0': exit(0); break; default: cout << "\nFalsche Eingabe, noch einmal..." << endl; break; } }while(auswahl != 1 || auswahl != 2 || auswahl != 3 || auswahl != 4 || auswahl != 5 || auswahl != 6 || auswahl != 7 || auswahl != 9 || auswahl != 0); /* // Nur Runterfahren des Systems int timeout = 0, force = 1, reboot = 1; //Sekunden,Schnelles Booten,Neustart { InitiateSystemShutdown( NULL,NULL, (DWORD) timeout, force, reboot ); } */ return 0; }und die header-datei:
// Rechtevergabe zum Herunterfahren des Systems // BOOL SetCurrentPrivilege( LPCTSTR Privilege, BOOL bEnablePrivilege ); // BOOL SetCurrentPrivilege( LPCTSTR Privilege, BOOL bEnablePrivilege ) { HANDLE hToken; LUID luid; TOKEN_PRIVILEGES tp, tpPrevious; DWORD cbPrevious = sizeof( TOKEN_PRIVILEGES ); BOOL bSuccess = FALSE; if ( ! LookupPrivilegeValue( NULL, Privilege, &luid ) ) return FALSE; if( ! OpenProcessToken( GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hToken ) ) return FALSE; tp.PrivilegeCount = 1; tp.Privileges[0].Luid = luid; tp.Privileges[0].Attributes = 0; AdjustTokenPrivileges( hToken, FALSE, &tp, sizeof( TOKEN_PRIVILEGES ), &tpPrevious, &cbPrevious ); if ( GetLastError() == ERROR_SUCCESS ) { tpPrevious.PrivilegeCount = 1; tpPrevious.Privileges[0].Luid = luid; if ( bEnablePrivilege ) tpPrevious.Privileges[0].Attributes |= ( SE_PRIVILEGE_ENABLED ); else tpPrevious.Privileges[0].Attributes &= ~( SE_PRIVILEGE_ENABLED ); AdjustTokenPrivileges( hToken, FALSE, &tpPrevious, cbPrevious, NULL, NULL ); if ( GetLastError() == ERROR_SUCCESS ) bSuccess=TRUE; } CloseHandle( hToken ); return bSuccess; }
-
OK, danke!
-
Nur für die, die es nicht sowieso schon wissen: Das ist WinAPI und hat mit C++ soviel am Hut wie Sharon mit den Sternsingern. Also, beim nächsten mal in ein passenderes Forum posten
.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.