Problem mit Funktionen bzw. switch?
-
Hallo zusammen.
Ich habe ein Problem mit einem Selbstgeschriebenen Programm. Ich bin noch ein ziemlicher C-Anfänger und programmiere erst seit ca. einem halben Jahr.Mein Problem sieht folgendermaßen aus:
Das ist mein Quellcode.
Zunächst startet das Main-Programm und ich kann zwischen Option 1,2 und 3 (herunterfahren, Neustart und Abmelden) wählen. Nach dieser Eingabe startet die Funktion aber nicht, oder führt zumindest nichts aus.
Über eureu Hilfe wäre ich sehr dankbar.lg, blckbird
// Shutdown.exe #include <stdafx.h> #include <iostream> #include <windows.h> using namespace std; int Shutdown() { int iMinutenH; int iSekundenH; cout<<"Sie haben Herunterfahren gewealt."<<endl; cout<<"Geben Sie bitte die Anzahl der Minuten ein, nachdenen ihr PC heruntergefahren\nwerden soll."<<endl<<endl; cout<<"Nach dem Ablauf der Zeit wird noch 30s gewartet um den Shutdown abzubrechen."<<endl; cin >>iSekundenH; iMinutenH = iSekundenH*60*1000; cout<<"\n============================================================================="<<endl; cout<<"Zum Abbrechen einfach Programm beenden."<<endl; cout<<"Falls der Shutdown schon laeuft: Start > Ausfuehren > shutdown -a eingeben"<<endl; Sleep (iMinutenH);//Das Programm wartet die eingegebene Zeit. system("shutdown -s -t 30 -f");//Der PC wird in 30s heruntergefahren. return 0; } int Neustarten() { //Zur Übersicht entfernt. } int Abmelden() { //Zur Übersicht entfernt. } void main() { int iAuswahl; cout<<"Willkommen zu Shutdown.exe"<<endl; cout<<"============================================================================="<<endl<<endl; cout<<"Was moechte sie tun?"<<endl<<endl;//Die Auswahl zwischen Herunterfahren, Neustraten oder Abmelden wird vom Benutzer getroffen cout<<"(1)Herunterfahren"<<endl; cout<<"(2)Neustarten"<<endl; cout<<"(3)Abmelden"<<endl; cin>> iAuswahl; switch (iAuswahl) { case 1: { int Shutdown(); } break; case 2: { int Neustarten(); } break; case 3: { int Abmelden(); } break; default: cout <<"Ihre Eingabe war ungueltig."<<endl; cout <<"Geben sie 1, 2 oder 3 ein."<<endl; } }
-
Falsches Forum, besser wäre vermutlich WinAPI, da das was Du aufrufen möchtest (shutdown) Windows Spezifisch ist. Ansi C wäre wohl auch ok, da system(..) Teil der C Library ist.
Hier ist auf jedefalls C++/CLI, was eine .NET Sprache ist.
Simon
-
okay.
sorry dann für den Spam, aber danke für die Antwort.
-
Funktioniert den der shutdown Command wenn Du ihn im Command Prompt von Windows eingibst?
Simon
-
Du meinst, wenn ich ihn bei Ausführen eingebe?
-Jap.
-
[quote="blckbird"]
cin >>iSekundenH; iMinutenH = iSekundenH*60*1000;
wenn hier Sekunden eingeben werden, dann machst Du daraus pauschal Minuten und anschließend multiplizierst Du die Zeit nachmal mit 1000 ... wenn also 1 Sekunde gewartet werden soll, kommen bei Dir 1000 Minuten raus
Sleep (iMinutenH);//Das Programm wartet die eingegebene Zeit.
die wartest Du natürlich hier ... bevor irgendwie der eigentliche Shutdown-Vorgang vom System angeschmissen wird
system("shutdown -s -t 30 -f");//Der PC wird in 30s heruntergefahren.
hand, mogel
-
Nein, leider ist das nicht das Problem.
Bei der Funktion Sleep wird n MilliSekunden gewartet. Der Benutzer wird aufgefordert die Minuten die verstrechen sollen einzugeben. Diese Zahl muss dann aber erst von MilliSekunden auf Sekunden und dann auf Minuten gebracht werden. Also, mal 1000 und dann mal 60.
Außerdem würde dann ja zunächst etwas nachdem man eine Auswahl getroffen hat ausgegeben werden, wird aber nicht.
-
ah ok ... mein Fehler ... wieso ich auf Sekunden beim Sleep gekommen bin - keiner weis es ... ansonsten ist der Shutdown-Befehl korrekt ... müsste eigentlich Funktioneiren ... hast Du es mit dem Debugger schon versucht?
-
was meinst du damit, also was ist das?
Das Prgramm liefert keine Fehlermeldung.
-
switch (iAuswahl) { case 1: { Shutdown(); } break; case 2: { Neustarten(); } break; case 3: { Abmelden(); } break; default: cout <<"Ihre Eingabe war ungueltig."<<endl; cout <<"Geben sie 1, 2 oder 3 ein."<<endl; }
eine erneute Initialisierung im Case ist irgendwie nutzlos,
so solltest Du weiter kommenmfg
-
Juhu!
Danke foxviper! So ein dummer Fehler
Danke Danke!PS.: Es läuft