Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Windows runterfahren - Erklärung gesucht!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
08.04.2004, 13:35 Uhr
Cebinem



Hallo an alle!!!
Ich hab mir einen Quellcode aus dem Internet geholt, welcher unter Windows XP und unter Windows 2000 das Betriebssystem herunterfährt, also der Quellcode geht nur unter Windows XP und unter Windows 2000.
Ich hab den Quellcode abgeschrieben und kompiliert und es hat funktioniert. Ich hab es auch unter Windows XP Professional ausprobiert und der Computer wurde runtergefahren. Der Quellcode ist ja soweit logisch, aber ich möchte mal wissen was das

C++:
-s -f -t 0 // nach "shutdown.exe"


bedeutet? Wenn ich es weg lasse funktioniert das Programm nicht mehr, also es startet zwar aber der Computer wird nicht runtergefahren. Noch eine zweite Frage: Warum muss ich hier die Header-Datei

C++:
#include <stdlib.h>


einbinden und warum geht das nicht mit

C++:
#include <iostream>


???

Hier ist der komplette Quellcode:


C++:
#include <stdlib.h>

int main()
{  
system("C:\\WINDOWS\\System32\\shutdown.exe -s -f -t 0 ");    
return 0;
}




Noch eine letzte Frage, warum geht z. B.:

C++:
#include <stdlib.h>

int main()
{  
system("C:\\Programme\\Ahead\\Nero\\nero.exe -s -f -t 0 ");    
return 0;
}


nicht, muss ich hier etwas anderes schreiben, weil es nicht im Windowsordner ist? Oder geht das nur wenn das Programm, was ausgeführt werden soll, im Windowsordner ist?

Hier noch ein paar Daten von mir:
Betriebssystem: Windows XP Professional
Compiler: DEV-C++ 4.9.8.0

Ich hoffe ihr könnt mir helfen und ich bedanke mich schon mal im vorraus für alle Antworten!!!!!!!!!!

MFG
Cebinem
--
Jetzt sind wir hier, was jetzt geschieht, geschieht uns. - Anna Seghers

Dieser Post wurde am 08.04.2004 um 13:37 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.04.2004, 13:45 Uhr
Pablo
Supertux
(Operator)


Ok, -s -f -t 0 sind die Argumente, die das Programm shutdown.exe braucht, um den Auftrag zu erledigen. Windows schaltet das System auf verschiedenen Art und Weisen, und mit -s -f -t 0 teilst du shutdown.exe, wie es windows runterfahren soll. Das hat allerdings mit deinem C++ Programm gar nichts zu tun. Es ist einfach so, shutdown.exe braucht diese Paramater und daran kannst du nichts ändern.

Die Funktion system wird so definiert:


Zitat:

man pages
#include <stdlib.h>

int system(const char *string);





Das heißt, dass system(const char* string) in stdlib.h deklariert und nicht in iostream.h. Deshalb funktioniert nicht, wenn du nur iostream.h.


Zitat:
Cebinem postete
Noch eine letzte Frage, warum geht z. B.:

C++:
#include <stdlib.h>

int main()
{  
system("C:\\Programme\\Ahead\\Nero\\nero.exe -s -f -t 0 ");    
return 0;
}


nicht, muss ich hier etwas anderes schreiben, weil es nicht im Windowsordner ist?


Das habe ich bereits erklärt. Das hat nichts mt deinem Programmzu tun, sondern mit dem aufgerufenen Programm. Wenn sowas nicht funktioniert, heißt es, dass nero.exe diese Argumente -s -f -t 0 nicht akzeptiert. Viele Programmen, die meisten sogar, stoppen, wenn du ihnen falsche Paramter übergibst. Bevor du ein Programm über system(); startest, solltest du wissen, welche Argumente notwendig sind, um dieses Programm zu starten.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 08.04.2004 um 13:45 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.04.2004, 14:00 Uhr
Cebinem



Danke erstmal für die Erklärung!!!!!!!!!!!!!!!!!!!!!!!
Ich hab jetzt aber noch zwei Fragen:
1. Muss ich immer die Funktion system mit

C++:
int system(const char *string);


definieren, wenn ich irgendein Programm starten will? Weil es ja in meinem Beispiel (Windows runterfahren) auch ohne diese Definition funktionierte oder muss ich das immer machen, auch bei anderen Programmen?

2. Woher weiß ich denn, welche Argumente notwendig sind, um ein bestimmtes Programm zu starten? Kann ich das irgendwo nachlesen oder ist das irgendwo im Programm hinterlegt?

MFG
Cebinem
--
Jetzt sind wir hier, was jetzt geschieht, geschieht uns. - Anna Seghers
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.04.2004, 14:06 Uhr
stephanw
localhorst


Du musst diese Funktion gar nciht definieren, die ist bereits definiert und du musst sie nur anwenden. Den String, den Du System übergibst, ist einfach ein Kommando, welches Du auch in der Konsole ausführen kannst.

Code:
shutdown -h



listet Dir alle Optionen auf. Was Nero für Optionen unterstüzt oder ob überhaupt welche, weiß ich nicht. Im Zweifel mit "-h " aufrufen oder Manual/Doku lesen
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
08.04.2004, 14:08 Uhr
Pablo
Supertux
(Operator)


1. Nein, die ist bereits in stdlib.h definiert. Das einzige, was du machen musst ist stdlib.h includieren.

2. Die meisten Programm haben eine Hilfe und du kannst sie mit --help aufrufen. Das ist zumindest so unter Linux. Da man immer noch sehr viel mit der Konsole arbeitet, macht man meistens


bash:

$ programm --help



Und dort werden die Optionen aufgelistet, die man benutzen kann, und vor allem, wozu man die Argumente gut sind. Oder ein aufruf von man progname reicht es auch.

Unter Windows gibt es das nicht mehr. Es gibt nur wenige Programme, die nit --help sowas anzeigen. Unter DOS war das noch üblich, weil man mit DOS das Programm in der Konsole starten musste. Ich weiß es nicht mehr, aber unter DOS war /help, wenn ich mich nicht irre.


command.com:

C:\>progrname /help



Da heute unter Windows nur per Doppelklick die Programme gestartet werden, werden soclhe Sachen wie /help oder --help nicht mehr eingebuat. Was du machen musst ist einfach probieren. Starte eine Konsole und mittels cd bewege dich zum Ordern, wo die ausführbare Datei ist. Z.b. Nero. Dann nero --help oder nero /help eingeben. Vielleicht kriegst du die Hilfe. Wenn nicht, dann hat Nero sowas nicht mehr eingebaut. Vielleicht auch im Benutzerhandbuch von Nero könnte das stehen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 08.04.2004 um 14:08 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
08.04.2004, 14:25 Uhr
Cebinem



DANKE nochmals für eure Hilfe!!!!!!!!!!!!!!!!!!!!!
Also, wie ich das nun richtig verstanden habe, muss ich bei Nero z. B.:

C++:
#include <stdlib.h>

int main()
{  
system("C:\\Programme\\Ahead\\Nero\\nero.exe -h"); /* oder --help  oder /help */    
return 0;
}


ausprobieren um die Argumente zu erhalten. Und das selbe sollte ich auch bei anderen Programmen ausprobieren. Wenn ich jetzt irgendwas falsch verstanden habe, könnt ihr mich gerne korrigieren.

MFG
Cebinem
--
Jetzt sind wir hier, was jetzt geschieht, geschieht uns. - Anna Seghers

Dieser Post wurde am 08.04.2004 um 14:30 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
08.04.2004, 14:32 Uhr
Pablo
Supertux
(Operator)


Ja, aber das musst du nicht innerhalb deines Programmes machen, sondern in der Konsole. Vorausgesetzt das funktioniert (system("C:\\Programme\\Ahead\\Nero\\nero.exe -h"); ) wirst du nur die Hilfe bekommen und nicht das Programm. Warum willst du Nero mit Argumenten aufrufen?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 08.04.2004 um 14:32 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
08.04.2004, 14:41 Uhr
Cebinem



Wie meinst du das: "Ja, aber das musst du nicht innerhalb deines Programmes machen, sondern in der Konsole."???
Ich will das mit Nero nur mal testen, ich könnts auch mit vielen anderen Programmen testen. Nero ist mir halt als erstes im Explorer begegnet als ich nach einem Beispiel für ein aufzurufendes Programm gesucht hab. Das hat weiter keine Bedeutung, es war halt nur ein Beispiel. Wüsstest du ein Programm bei welchem -h, --help oder /help noch funktioniert?

MFG
Cebinem
--
Jetzt sind wir hier, was jetzt geschieht, geschieht uns. - Anna Seghers
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
08.04.2004, 14:47 Uhr
Pablo
Supertux
(Operator)


Wenn du

C++:
#include <stdlib.h>

int main()
{  
system("C:\\Programme\\Ahead\\Nero\\nero.exe -h"); /* oder --help  oder /help */    
return 0;
}



ausführst, (vorausgesetzt, dass nero.exe die -h Option kennt und dementsprechen etwas ausgibt) dann wird dein Programm Nero nicht öffnen, sondern nur die Hilfe von nero ausgeben. Ich nehme an, dass dein Programm Nero starten soll und nicht nur die Hilfe anzeigen. Wenn du aber nur die Argumente erfahren willst, also nur für sich, ist es dann nicht notwendig ein Programm dafür zu schreiben. Das ist was ich gemeint habe. Es reicht, unter Start Menür -> Ausführen : cmd eingeben


C++:
C:\Dokumente und Einstellugen\cebinem\:>[b]cd[/b]
C:\>[b]cd Programme\Ahead\Nero[/b]
C:\Programme\Ahead\Nero>[b]nero -h[/b] (oder --help oder /help)


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 08.04.2004 um 14:48 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
08.04.2004, 14:59 Uhr
Cebinem



für die vielen vielen Erklärungen!!! Jetzt weiß ich was du meinst! Also ich möchte die Hilfe angezeigt haben und damit (vielleicht) auch die Argumente zum Starten des Programm um danach das Programm mit

C++:
#include <stdlib.h>

int main()
{  
system("C: \\Programme\\Ahead\\Nero\\nero.exe"); // und hinter "nero.exe" halt die Argumente die Nero braucht um zu starten
return 0;
}


starten zu können und das hast du mir nun ausführlich erklärt, DANKE!

MFG
Cebinem
--
Jetzt sind wir hier, was jetzt geschieht, geschieht uns. - Anna Seghers

Dieser Post wurde am 08.04.2004 um 15:10 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: