[C/C++] Shutdown programm

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Listner, 13. Juni 2007 .

Schlagworte:
  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
    
     
  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.
     
  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
     
  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;
    }
    
    
     
  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 ...
     
  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
     
  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!
     
  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???
     
  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
     
  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...
     
  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());
     
  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
     
  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
     
  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!!
     
  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
     
  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
     
  17. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.