Shutdown-Programm

$leepwalker

Lt. Junior Grade
Registriert
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
 
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

  • shutdown.jpg
    shutdown.jpg
    13,4 KB · Aufrufe: 220
Prinzipiell funktionert das also bei dir. Tja, vielleicht führt dein CPP Programm den Befehl nicht richtig aus? Fehler in der Logik des Programmes oder so wat?

Poste doch mal den Source
 
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();
}
 
$leepwalker schrieb:
ja, wenn ich es in der Konsole eingebe...
Du gibst es aber nicht in der Konsole ein sondern über dein Programm an irgendwas in Windows.
Probier mal "cmd /c ..." zu übergeben (... = dein Kommando). Damit übergibst du dem Kommandointerpreter das Kommando zur Ausführung.

Gruß,
stengbiegel
 
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 ;)
 
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 ?
 
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
 
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.
 
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:
 
Zurück
Oben