Shutdown-Programm

$leepwalker

Lt. Junior Grade
Dabei seit
Juni 2005
Beiträge
282
Hi

Da ich C++ ein wenig lernen möchte, probier ich immer einfache Programme selber zu schreiben. Jetzt wollte ich mir ein Programm schreiben, dass den Rechner nach einer bestimmten Zeit herunterfährt. Nach einer längeren Suche im Internet, habe ich folgenen Befehl gefunden: " system("shutdown -s -f -t 900"); ".
Nun da ich nicht sehr viel kann, hab ich es mir wie folgt gedacht:

switch(wahl)
{
case 1:
system("shutdown -s -f -t 900");
break;
case 2:
system("shutdown -s -f -t 1800");
break;

....und halt so weiter.
Wenn ich jetzt allerdings einen case auswähle passiert einfach nix.
Hab ich irgendwelche Bibliotheken vergessen ?
Wegen dem Shutdown-Befehl ich habe Win XP.

Danke und mit freundlichen Grüßen:
$leepwalker
 

merv

Lt. Commander
Dabei seit
Juni 2002
Beiträge
1.541
Ich würde das Programm so aufbauen, dass du die Zeit in Minuten als Argument übergibts und daraus dann den Windowsbefehl shutdown zusammensetzt.

Das mal dazu.

Funktioniert der Befehl denn, wenn du ihn in der Konsole ausführst?

EDIT: Hab mal nen Screenie angehängt wie es aussieht, wenn ich den Befehl ausführe. Das müsstest du zu Gesicht bekommen.
 

Anhänge

$leepwalker

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Juni 2005
Beiträge
282
Also ich habs so versucht:

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
main()
{
int wahl;

printf("Waehlen Sie die Zeit, nachder sich der PC automatisch herunterfahren soll.");
printf("\n1:15min.\n2:30min.\n3:45min.\n4:1Std.\n5:2Std.\n6:3Std.\n7:4Std.\n8:5Std.\n9:10Std.\n10:20Std.");
printf("\nBitte mit ENTER bestätigen.");
scanf("%i",wahl);
switch(wahl)
{
case 1:
system("shutdown -s -f -t 900");
break;
case 2:
system("shutdown -s -f -t 1800");
break;
case 3:
system("shutdown -s -f -t 2700");
break;
case 4:
system("shutdown -s -f -t 3600");
break;
case 5:
system("shutdown -s -f -t 7200");
break;
case 6:
system("shutdown -s -f -t 10800");
break;
case 7:
system("shutdown -s -f -t 14400");
break;
case 8:
system("shutdown -s -f -t 18000");
break;
case 9:
system("shutdown -s -f -t 36000");
break;
case 10:
system("shutdown -s -f -t 72000");
break;
};
getch();
}
 

daemon777

Lt. Commander
Dabei seit
Dez. 2003
Beiträge
1.371
Also bei mir gehts auch mit: system("shutdown -s -f -t 72000");

Deinen ( Sleepwalker ) Code kann ich erst gar nicht erst kompilieren weil du statt "int main()" einfach nur "main()" geschrieben hast ;)
 

$leepwalker

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Juni 2005
Beiträge
282
Kann mir mal bitte einer ein ähnlich übersichtliches(für Anfänger) Programm schicken,
welches funktioniert ?
Damit ich einmal genau vergleichen kann um zu sehen wo meine Fehler liegen ?
 

Arnd

Lieutenant
Dabei seit
Jan. 2005
Beiträge
926
Hallo $leepwalker,

Code:
int wahl=0;

printf("Waehlen Sie die Zeit, nachder sich der PC automatisch herunterfahren soll.");
printf("\n1:15min.\n2:30min.\n3:45min.\n4:1Std.\n5:2Std.\n6:3Std.\n7:4Std.\n8:5S td.\n9:10Std.\n10:20Std.");
printf("\nBitte mit ENTER bestätigen.");
scanf("%i",&wahl);
switch(wahl)
Zum einen ist wahl nicht initialisiert und beim scanf fehlt das &.

MfG

Arnd
 

daemon777

Lt. Commander
Dabei seit
Dez. 2003
Beiträge
1.371
Das ganze geht auch mit noch weniger Code:

Code:
#include <iostream>

using namespace std;

int main()
{
	int eingabe;
	char result[64];
	cout<<"In wie vielen Minuten soll der PC heruntergefahren werden ?"<<endl;
	cin>>eingabe;
	eingabe*=60;
	sprintf(result,"shutdown -s -f -t %d",eingabe);
	system(result);
	return 0;
}
Wenn du es in reinem C haben willst ersetzt du dann einfach die cout durch printf und cin durch scanf.

ich finde das so jedenfalls wesentlich praktischer weil du 1. nicht die ganzen switches einzelnd hinschreiben musst und 2. weil der Benutzer auch andere Zeiten wählen kann als nur in 15min Schritten.
 

MagicAndre1981

Admiral
Dabei seit
Feb. 2004
Beiträge
7.457
OMG

Und unter allen Windowsversionen < XP läuft euer "Programm" nicht, da es keine Shutdown.exe gibt :rolleyes:

Einfach mal im Netz schauen, da gibt soooo viel zu dem Thema :rolleyes:
 
Top