#1 13. Juni 2007 Shutdown programm hi leute, ich benutze oft über cmd dem befehl "shutdown -s -f -t" da ich ziemlich faul bin, hab ich nicht immer lust, die zeit in sekunden auszurechen, die mein pc noch anbleiben soll, aus diesem grund hab ich versuch n kleines progamm zu schreiben, da dies nicht so funktioniert, wie ich will und ich nicht besonderst viele cpp kentnisse habe, bitte ich um eure Hilfe!! das problem: das proggy rechnet zwar die zeit in sekunden aus, aber er fährt nicht herunter, bzw es ignoriert den shutdown sozusagen, bzw. so wie ich will! xD liegt es daran, das ich hinter dem -t keine variable (in diesem fall xx) setzen darf?? wenn ja, wie kann ich dieses problem sonst noch lösen?? der code: Code: #include <iostream> using namespace std; int main () { int day,hours, minutes, seconds; int seconds_day, seconds_hours, seconds_minutes; int seconds_all, xx; cout <<"Bitte die Zeit eingenen, in der ihr PC restarten soll!!" << endl; cout <<" Days: " << endl; cin >> day; cout <<"Hours: " << endl; cin >> hours; cout <<" Minutes: " << endl; cin >> minutes; cout <<"Seconds: "<< endl; cin >> seconds; seconds_day = day*24*60*60; seconds_hours = hours*60*60; seconds_minutes = minutes*60; seconds_all = xx= seconds_day + seconds_hours + seconds_minutes + seconds; cout << seconds_all <<"sekunden herunterfahren??" << endl; system ("shutdown -s -f -t xx"); return 0; } thx im vorraus, BW geht bei hilfe raus!! mfg listner + Multi-Zitat Zitieren
#2 13. Juni 2007 AW: Shutdown programm wenn du machst: Code: system ("shutdown -s -f -t xx"); dann steht da auch xx und nicht die zeit. du musst es so machen: Code: char buf[100]; sprintf(&buf, "shutdown -s -f -t %i", xx); system(&buf); dürfte gehen. + Multi-Zitat Zitieren
#3 13. Juni 2007 AW: Shutdown programm ok, danke schön mal!!! -> bw haste mein compiler spuck allerdings die fehlermeldung aus, das es in C ist!! kann mir noch einer nen tipp geben !! wen möglich in C++?? mfg + Multi-Zitat Zitieren
#4 13. Juni 2007 AW: Shutdown programm c is eigentlich voll aufwärtskompatiebel, also kannste auch c programme mit nem c++ kompiler kompilieren Edit: , bei mir gehts auch nich Edit so gehts: Code: #include <iostream> using namespace std; int main () { int day,hours, minutes, seconds; int seconds_day, seconds_hours, seconds_minutes; int seconds_all, xx; cout <<"Bitte die Zeit eingenen, in der ihr PC restarten soll!!" << endl; cout <<" Days: " << endl; cin >> day; cout <<"Hours: " << endl; cin >> hours; cout <<" Minutes: " << endl; cin >> minutes; cout <<"Seconds: "<< endl; cin >> seconds; seconds_day = day*24*60*60; seconds_hours = hours*60*60; seconds_minutes = minutes*60; seconds_all = xx= seconds_day + seconds_hours + seconds_minutes + seconds; cout << seconds_all <<"sekunden herunterfahren??" << endl; char OutStr[100]; sprintf(OutStr, "shutdown -s -f -t %d", xx); system (OutStr); return 0; } + Multi-Zitat Zitieren
#5 13. Juni 2007 AW: Shutdown programm versuch das hier: Code: #include <string> #include <sstream> #include <vector> #include <windows.h> String irgendwas; ostringstream Str; string zeit(Str.str()); irgendwas = "shutdown -s -f -t "; irgendwas += zeit; System(irgendwas); Keine Ahnung, obs funktioniert ... + Multi-Zitat Zitieren
#6 13. Juni 2007 AW: Shutdown programm system schreib man erstens klein (C++ ist case sensitive) und zweitens will es einen char pointer und kein string objekt: Code: System(irgendwas); muss heißen: Code: system(irgendwas.c_str()); /edit: Mir fällt grad auf das du dem string konstruktor einen leeren string übergibts, was soll das bringen? Code: #include <iostream> using namespace std; int main () { int day,hours, minutes, seconds; int seconds_day, seconds_hours, seconds_minutes; int seconds_all, xx; cout <<"Bitte die Zeit eingenen, in der ihr PC restarten soll!!" << endl; cout <<" Days: " << endl; cin >> day; cout <<"Hours: " << endl; cin >> hours; cout <<" Minutes: " << endl; cin >> minutes; cout <<"Seconds: "<< endl; cin >> seconds; seconds_day = day*24*60*60; seconds_hours = hours*60*60; seconds_minutes = minutes*60; seconds_all = xx= seconds_day + seconds_hours + seconds_minutes + seconds; cout << seconds_all <<"sekunden herunterfahren??" << endl; string OutStr("shutdown -s -f -t"); OutStr += xx; system (OutStr.c_str()); return 0; } Ich hab aber noch nie einen Compiler gesehen der motzt wenn man C verwendet oO. Welchen verwendest du (interessiert mich nur)? mfg tobZel + Multi-Zitat Zitieren
#7 13. Juni 2007 AW: Shutdown programm @ tobzel danke für deine hilfe, bw raus! aber es passiert genau so viel wie vorher xD nämlich nix mfg bin für weitere vorschläge offen! + Multi-Zitat Zitieren
#8 13. Juni 2007 AW: Shutdown programm kann man dann so was Code: #include <iostream> using namespace std; int main () { int xx = 10; char OutStr[100]; sprintf(OutStr, "shutdown -s -f -t %d", xx); system (OutStr); return 0; } als virus an freunde schickn??? + Multi-Zitat Zitieren
#9 13. Juni 2007 AW: Shutdown programm lol 1. Man benutzt nicht anderer Leute Threads 2. Ist das Programm falsch (stdio.h und stdlib.h fehlen) 3. Schickt man keine sinnlosen Programme an Freunde, dass ist witzlos. mfg tobZel + Multi-Zitat Zitieren
#10 13. Juni 2007 AW: Shutdown programm naja von nem virus ist das noch weit entfernt, aber wenn du so ein programm compilierst und das in die autostart von jemanden packst dann fährt sein rechner 10 s nach hochfahren, wieder runter... + Multi-Zitat Zitieren
#11 13. Juni 2007 AW: Shutdown programm dann muss man halt dem Str noch einen wert zuweisen ... Sag mir bitte nicht, dass du keine Fehler machen würdest.Nobody is perfect.... Code: #include <string> #include <sstream> #include <vector> #include <windows.h> cout<<"zeit"; String irgendwas; ostringstream Str; cin>>Str; string zeit(Str.str()); irgendwas = "shutdown -s -f -t "; irgendwas += zeit; System(irgendwas.c_str()); + Multi-Zitat Zitieren
#12 13. Juni 2007 AW: Shutdown programm @ktm123 So war das ja net gemeint. Hab dir mal ne BW gegeben @t-low Jop das funkt. mfg tobZel + Multi-Zitat Zitieren
#13 13. Juni 2007 AW: Shutdown programm @ t-low: eine einfache bat mit... ...in den Autostartordner, und der PC wird endlos nach 4 Sekunden neu gestartet. Gib mal bei "Ausführen..." CMD ein, dann "shutdown". Da steht alles dazu... @Listner: Wir schauen ja per ICQ nach ner Lösung. Also ich habe Dev-C++, und folgender Code klappt bei mir ohne Fehler. Listner hat MS VC++, der meckert wegen dem snprintf. Sn0wm4n + Multi-Zitat Zitieren
#14 13. Juni 2007 AW: Shutdown programm also, erst mal danke für die reichlichen antworten!!!!! und dazu, das als virus an freunde zu schicken, find ich nicht sooo toll 1. gibt es so einen virus schon 2. wird er schon von billiger antivir proggys gesperrt. eingschlislich dem daten manager von msn oder icq xD!!!!! ich werde eure tipps gleich mal austesten! mfg ps: bw an alle raus! Edit: dieser code funktioniert sogar bei mir *freu* könnte mir nur noch jemand erklären, was es mit: Code: char OutStr[100]; sprintf(OutStr, "shutdown -s -f -t %d",xx); system (OutStr); auf sich hat??? wäre echt nice!!! mfg!! + Multi-Zitat Zitieren
#15 13. Juni 2007 AW: Shutdown programm Jo mit char OutStr[100] definiert man einen speicher für 99text zeichen (letztes für \0) mit sprintf(OutStr, "shutdown -s -f -t %d",xx) wird der string in die speicher stelle geschrieben %d ist ein platzhalter der dann durch xx ersetzt wird. mit system sendest das ganze dann an die konsole. mfg tobZel + Multi-Zitat Zitieren
#16 13. Juni 2007 AW: Shutdown programm Hab hier auch was geschrieben. bei dem Programm kannst du mittels Parameter einen Befehl bzw. Programm mitteilen und eine Datum mit Uhrzeit. Das Prog wird dann zu dem angegebenen Zeitpunkt ausgeführt. Ein Aufruf des Programms könnte so aussehen: ./myTimer “shutdown -h now“ “Wed 04 04 2007 14:00“ Code: #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <time.h> #include <string.h> int main (int argc, char *argv[]) { printf("Eingegebenes Datum: %s\n",argv[2]); printf("Eingegebenes Programm: %s\n",argv[1]); while(1) { //Aktuelle Zeit ermitteln time_t now; now = time(NULL); char datestring[22]; struct tm *tm; tm = localtime(&now); strftime (datestring, sizeof(datestring),"%a %d %m %Y %H:%M", tm); //Die beiden Strings miteinander vergleichen int cmp; cmp = strcmp(datestring, argv[2]); //strcmp liefer 0 zurück wenn die Strings gleich sind. if (cmp == 0) { pid_t pid; //Kindprozess erzeugen. switch(pid=fork()) { case -1: printf("Fehler beim Aufruf von fork()!\n"); exit(1); case 0: //Das eingegebene Programm mit execl aufrufen und ausführen. if((execl(argv[1], argv[1], NULL))<0) { printf("Fehler bei execl!"); exit(1); } } exit(0); } else //Eine Sekunde Wartezeit. {sleep (1);} } } Gruß Jojo + Multi-Zitat Zitieren