PC Forum Computerforum Appleforum Technikforum »
Software »
Betriebssysteme: Windows, Linux & Co. »
Windows XP »
NEU: Gewinnspiel "Play & Win"
Jetzt mitmachen und einen hochwertigen 32GB Stick im Wert von ca. 50 Euro gewinnen.
Das Gewinnspiel ist nat. wie immer KOSTENLOS und spamfrei!
Aktueller Stand/Screenupload: Hier klicken
Batch/Script für Neustart?
Hallo CB! Nach langer Zeit melde ich mich hier auch mal wieder!
Habe eine Frage, doch ich weiß zunächst nicht, ob ich hier überhaupt im richtigen Bereich bin? - Wenn nicht, bitte einfach verschieben und verzeihen. :clown:
Ich möchte ein kleines Batch oder Script für Windows selber machen, welches folgendes machen soll:
Auf Google war auch die Rede von einer .vbs-Datei, doch so etwas kenne ich nicht? Wäre auch schön, wenn ich am Ende eine kleine .EXE hätte, damit man die Datei nicht einfach bearbeiten und ändern kann.
Hoffentlich findet sich hier jemand der mir dabei weiterhelfen kann. Bin über jede Hilfe sehr dankbar!
Habe eine Frage, doch ich weiß zunächst nicht, ob ich hier überhaupt im richtigen Bereich bin? - Wenn nicht, bitte einfach verschieben und verzeihen. :clown:
Ich möchte ein kleines Batch oder Script für Windows selber machen, welches folgendes machen soll:
- nach dem klick darauf, soll eine bestimmte Zeit abgewartet werden (bspw. 25 min)
- nach dieser Wartezeit soll eine Art "Fehlermeldung" erscheinen, wo ich einen eigenen Text anzeigen lassen kann, und diese Meldung nur einen OK-Button besitzt
- nach dem Klick auf OK soll Windows neu starten
Auf Google war auch die Rede von einer .vbs-Datei, doch so etwas kenne ich nicht? Wäre auch schön, wenn ich am Ende eine kleine .EXE hätte, damit man die Datei nicht einfach bearbeiten und ändern kann.Hoffentlich findet sich hier jemand der mir dabei weiterhelfen kann. Bin über jede Hilfe sehr dankbar!
Gruß
Hallo,
in dem Bereich shutdown.exe bist du schon richtig. Allerdings wenn du es mit einer Batch-Datei machen willst, bekommst du keinen "OK" Button hin. Für diese Lösung einfach mal ein DOS Fenster öffen und shutdown eingeben. Dort wird dir dann die Hilfe angezeigt. Der eigene Text ging denke ich mit -c "Dein Text" und die zeit ging mit -t <Anzahl in Sekunden>.
Ich bin ja nicht so der Fan von Visual Basic, aber wenn den "OK" Button haben willst, wirst du ums Programmieren nicht herum kommen. Ich kann dir hier C# empfehlen. Lade dir einfach von Microsoft Visual Studio 2010 Express herunter.
Die Vorgehensweise für das Programm geht wie folgt:
1. Ein neues Windows Forms Projekt anlegen. Ich nenne es jetzt mal neustart. Der Name kann natürlich beliebig gewählt werden
2. Dann siehst du im Editor eine leere Windows Form. Prüfe bitte, ob die benötigten Toolbars eingeblendet sind. Links sollte die Auswahl für die Forms Elemente sein, rechts der Projektmappen Explorer und darunter Eigenschaften.
3. Klicke nun einmal die leere Form an. Drüben im Eigenschaftsfenster kannst du dann so Sachen einstellen, wie z. B. das Minimieren erlauben, usw. Ist eigentnlich recht einfach zu verstehen und selbst erklärend.
4. Wenn du alle Steuerelemente eingefügt hast, musst du jedes davon Doppelklicken, um den jeweiligen Code dafür generieren zu lassen.
5. oben bei den ganzen using Anweisungen musst du zwei Zeilen händisch einfügen, da wir für dein Vorhaben Threads und Prozesse brauchen Das geht ganz einfach mit folgenden Codezeilen:
5. Gehe nun in die Methode Form_Load. Dort gibst du jetzt folgendes ein:
6. Gehe nun in die Mehtode für dein Button (einfach im Form doppelklicken)
Das ist so der gröbste Code dafür. Damit wäre aber das Programm recht steif, du hättest z. B. noch die Möglichkeit es per Parameterübergabe zu starten, um jedes mal eine andere Wartezeit und Text zu erzielen. Die Parameterübergabe kannst du dann auch einfach abspeichern als eine .bat oder .cmd Datei. Wenn du das willst, sag bescheid, dann bekommst du den Code dafür, bzw. ich erledige es für dich.
MFG derwunner
in dem Bereich shutdown.exe bist du schon richtig. Allerdings wenn du es mit einer Batch-Datei machen willst, bekommst du keinen "OK" Button hin. Für diese Lösung einfach mal ein DOS Fenster öffen und shutdown eingeben. Dort wird dir dann die Hilfe angezeigt. Der eigene Text ging denke ich mit -c "Dein Text" und die zeit ging mit -t <Anzahl in Sekunden>.
Ich bin ja nicht so der Fan von Visual Basic, aber wenn den "OK" Button haben willst, wirst du ums Programmieren nicht herum kommen. Ich kann dir hier C# empfehlen. Lade dir einfach von Microsoft Visual Studio 2010 Express herunter.
Die Vorgehensweise für das Programm geht wie folgt:
1. Ein neues Windows Forms Projekt anlegen. Ich nenne es jetzt mal neustart. Der Name kann natürlich beliebig gewählt werden
2. Dann siehst du im Editor eine leere Windows Form. Prüfe bitte, ob die benötigten Toolbars eingeblendet sind. Links sollte die Auswahl für die Forms Elemente sein, rechts der Projektmappen Explorer und darunter Eigenschaften.
3. Klicke nun einmal die leere Form an. Drüben im Eigenschaftsfenster kannst du dann so Sachen einstellen, wie z. B. das Minimieren erlauben, usw. Ist eigentnlich recht einfach zu verstehen und selbst erklärend.
4. Wenn du alle Steuerelemente eingefügt hast, musst du jedes davon Doppelklicken, um den jeweiligen Code dafür generieren zu lassen.
5. oben bei den ganzen using Anweisungen musst du zwei Zeilen händisch einfügen, da wir für dein Vorhaben Threads und Prozesse brauchen Das geht ganz einfach mit folgenden Codezeilen:
|
|
Source code |
1 2 |
using System.Threading; // Fürs Threading using System.Diagnostics; // Für Prozesse |
5. Gehe nun in die Methode Form_Load. Dort gibst du jetzt folgendes ein:
|
|
Source code |
1 2 3 |
this.Hide(); // Versteckt die Windows Form Thread.Sleep(<Zeit in Millisekunden>); // Programm schlafen lassen für XX Millisekunden this.Show(); // Nach dieser Zeit Programm wieder anzeigen |
6. Gehe nun in die Mehtode für dein Button (einfach im Form doppelklicken)
|
|
Source code |
1 2 |
string text = "Dein Text"; Process.Start(@"C:\Windows\system32\shutdown.exe", "\r \c " + text + " \t 0"); |
Das ist so der gröbste Code dafür. Damit wäre aber das Programm recht steif, du hättest z. B. noch die Möglichkeit es per Parameterübergabe zu starten, um jedes mal eine andere Wartezeit und Text zu erzielen. Die Parameterübergabe kannst du dann auch einfach abspeichern als eine .bat oder .cmd Datei. Wenn du das willst, sag bescheid, dann bekommst du den Code dafür, bzw. ich erledige es für dich.
MFG derwunner
Hallo derwunner,
vielen lieben Dank für deine Antwort. Ich habe mir das Programm besorgt, und mich mal daran versucht.
Hab es jetzt mal so erstellt vom Aussehen her wie ichs gern hätte. Bei mir klappt das mit dem Restart nicht. Habe das wo du mir vorgegeben hast, etwas abgeändert:
Da ich kein Kommentar ausgeben möchte. Aber: es wird nicht neu gestartet. Es passiert nix - was ist falsch?
Wenn es irgendwie geht, hätte ich es gerne so, dass zu aller erst das Fenster erst geschlossen und dann der Restart ausgeführt wird (so nach etwa 1-2 Sek.). Ist es ausßerdem möglich, dass wenn ich anstatt auf den Button klicke das rote Kreuz rechts oben drücke, dass er da das gleiche macht wie bei einem klick auf den Button? Und zu letzt: Würde es gehen, das Fenster mittig anzuzeigen und dass es immer im Vordergrund bleibt?
/ Edit: Oh mir fällt noch etwas ein (Sorry :worshippy: ): Ist es weiter möglich, dass wenn man gar nichts macht dass dann trotzdem nach 5 Minuten neugestartet wird?
vielen lieben Dank für deine Antwort. Ich habe mir das Programm besorgt, und mich mal daran versucht.
Hab es jetzt mal so erstellt vom Aussehen her wie ichs gern hätte. Bei mir klappt das mit dem Restart nicht. Habe das wo du mir vorgegeben hast, etwas abgeändert:
Habe ich abgeändert in:6. Gehe nun in die Mehtode für dein Button (einfach im Form doppelklicken)
![]()
Source code
1 2 string text = "Dein Text"; Process.Start(@"C:\Windows\system32\shutdown.exe", "\r \c " + text + " \t 0");
|
|
Source code |
1 |
Process.Start(@"C:\Windows\system32\shutdown.exe", "\r \f \t 0"); |
Da ich kein Kommentar ausgeben möchte. Aber: es wird nicht neu gestartet. Es passiert nix - was ist falsch?
Wenn es irgendwie geht, hätte ich es gerne so, dass zu aller erst das Fenster erst geschlossen und dann der Restart ausgeführt wird (so nach etwa 1-2 Sek.). Ist es ausßerdem möglich, dass wenn ich anstatt auf den Button klicke das rote Kreuz rechts oben drücke, dass er da das gleiche macht wie bei einem klick auf den Button? Und zu letzt: Würde es gehen, das Fenster mittig anzuzeigen und dass es immer im Vordergrund bleibt?
/ Edit: Oh mir fällt noch etwas ein (Sorry :worshippy: ): Ist es weiter möglich, dass wenn man gar nichts macht dass dann trotzdem nach 5 Minuten neugestartet wird?
Gruß.
This post has been edited 1 times, last edit by "Thomas" (Oct 24th 2010, 2:10pm)
Hi,
oh ja sorry, ich sehe gerade, dass es mein Fehler. Man kann diese Angabe effektiv auf 2 verschiedene Arten machen. Tja, ich hab leider unbewusst alle 2 vermischt, was widerum nicht ging^^
Naja, bei der Paramaterübergabe anstatt \r musst du einfach -r schreiben, und das bei jedem Parameter. Ging auf jeden Fall bei mir bei Windows 7 so.
Die andere Möglichkeit wäre gewesen, dass man vorne anstatt den Klammeraffen in C# Pfadangaben immer mit doppelten Querstrichen schreibt, aber damit macht man häufig Fehler, deswegen benutze ich gerne die andere Methode.
Und ja, ein Neustart, bzw. whatever ist auch ohne das man was macht möglich. Einfach oben im Teil Form_Load den Befehl zum Neustart noch mit einfügen. Diese Methode wird nämlich immer aufgerufen, wenn das Programm gestartet wird.
Das mit dem bei auf Schließen klicken und dann einen Neustart ausführen, ist theoretisch möglich (sieh Close - Event), aber nicht so einfach, wie es sich anhört. Da bin selbst ich überfragt, das kann ich auch noch nicht.
Das Programm vorher schließen? Klar, das geht einfach mit der Anweisung this.Close(); Achtung: Hier ist etwas umgedrehte Logik angebracht, erst die Anweisung zum Neustart hinschreiben, dann das this.Close(); sonst würdest du ja das Programm schließen, ohne den Neustart auszuführen.
MFG derwunner
oh ja sorry, ich sehe gerade, dass es mein Fehler. Man kann diese Angabe effektiv auf 2 verschiedene Arten machen. Tja, ich hab leider unbewusst alle 2 vermischt, was widerum nicht ging^^
Naja, bei der Paramaterübergabe anstatt \r musst du einfach -r schreiben, und das bei jedem Parameter. Ging auf jeden Fall bei mir bei Windows 7 so.
Die andere Möglichkeit wäre gewesen, dass man vorne anstatt den Klammeraffen in C# Pfadangaben immer mit doppelten Querstrichen schreibt, aber damit macht man häufig Fehler, deswegen benutze ich gerne die andere Methode.
Und ja, ein Neustart, bzw. whatever ist auch ohne das man was macht möglich. Einfach oben im Teil Form_Load den Befehl zum Neustart noch mit einfügen. Diese Methode wird nämlich immer aufgerufen, wenn das Programm gestartet wird.
Das mit dem bei auf Schließen klicken und dann einen Neustart ausführen, ist theoretisch möglich (sieh Close - Event), aber nicht so einfach, wie es sich anhört. Da bin selbst ich überfragt, das kann ich auch noch nicht.
Das Programm vorher schließen? Klar, das geht einfach mit der Anweisung this.Close(); Achtung: Hier ist etwas umgedrehte Logik angebracht, erst die Anweisung zum Neustart hinschreiben, dann das this.Close(); sonst würdest du ja das Programm schließen, ohne den Neustart auszuführen.
MFG derwunner
Hallo derwunner,[...] Und ja, ein Neustart, bzw. whatever ist auch ohne das man was macht möglich. Einfach oben im Teil Form_Load den Befehl zum Neustart noch mit einfügen. [...]
ist es richtig, wenn ich den Befehl für den Neustart hierzu einfüge:
|
|
Source code |
1 2 3 4 5 6 7 |
private void Form1_Load(object sender, EventArgs e)
{
this.Hide(); // Versteckt die Windows Form
Thread.Sleep(120000); // Programm schlafen lassen für XX Millisekunden
this.Show(); // Nach dieser Zeit Programm wieder anzeigen
Process.Start(@"C:\Windows\system32\shutdown.exe", "-r -f -t 2");
}
|
Wenn ja, wie bekomme ich es hin, dass mir keine Meldung über das Herunterfahren kommt?
Ansonsten sieht es schon fast so aus wie ich es mir gewünscht habe!
Gruß.
Hi,
also wenn du bei Zeit 2 Sekunden einstellst, kommt immer ne Meldung von Windows, die lässt sich nicht wegmachen, außer du machst dir eine eigene shutdown.exe. Deswegen ja der Trick mit 0 Sekunden, damit das gar nicht erst erscheint, bzw. nur mal kurz aufblinkt.
Wenn du damit die Windows Form meinst, die kannst du auch versteckt lassen, also einfach in der Form1_Load das this.Show(); raus machen. Der Kernprozess läuft ja im System trotzdem weiter, man sieht nur nichts davon.
MFG derwunner
also wenn du bei Zeit 2 Sekunden einstellst, kommt immer ne Meldung von Windows, die lässt sich nicht wegmachen, außer du machst dir eine eigene shutdown.exe. Deswegen ja der Trick mit 0 Sekunden, damit das gar nicht erst erscheint, bzw. nur mal kurz aufblinkt.
Wenn du damit die Windows Form meinst, die kannst du auch versteckt lassen, also einfach in der Form1_Load das this.Show(); raus machen. Der Kernprozess läuft ja im System trotzdem weiter, man sieht nur nichts davon.
MFG derwunner
Hallo derwunner,
Sorry die 2 Sekunden war nur ml so als Beispiel,..... ich hätte es eigentlich gern nur dafür, dass wenn nach bspw. 5min nichts unternommen wurde, trotzdem ein Neustart durchgeführt wird. Doch wenn ich jetzt hier 5min einstelle, kommt auch sofort die Meldung "Windows fährt in 5 Minuten herunter" was ich ungern anzeigen lassen möchte. Alles andere passt soweit. Ich kenne so ein unterdrücken über @echo off doch ich glaube das nimmt C# nicht an, oder?
Sorry die 2 Sekunden war nur ml so als Beispiel,..... ich hätte es eigentlich gern nur dafür, dass wenn nach bspw. 5min nichts unternommen wurde, trotzdem ein Neustart durchgeführt wird. Doch wenn ich jetzt hier 5min einstelle, kommt auch sofort die Meldung "Windows fährt in 5 Minuten herunter" was ich ungern anzeigen lassen möchte. Alles andere passt soweit. Ich kenne so ein unterdrücken über @echo off doch ich glaube das nimmt C# nicht an, oder?
Gruß.
Hi,
sorry meine späte Antwort, habs irgendwie etwas verpeilt xD
Nein, das was du willst geht so nicht. Du kannst keine fremden Prozesse beeinflussen. Das wäre ja noch schöner. Nicht auszudenken, was das für Folgen hätte. Mal abgesehen von den leicht zu machenden Cracks würdest du damit Hackern Tür und Tor öffnen.
Du kannst allerdings einen Prozess mithilfe einer Windows dll verstecken. Er läuft weiter, aber du findest ihn nur noch im Task Manager. Das ist aber um einiges schwieriger. Den Code dazu müsste ich mir auch erst einmal wieder raussuchen, wenn du das willst. Deswegen hatte ich dir ja auch zu den einfacheren Weg geraten, direkt über deine Windows Form.
MFG derwunner
sorry meine späte Antwort, habs irgendwie etwas verpeilt xD
Nein, das was du willst geht so nicht. Du kannst keine fremden Prozesse beeinflussen. Das wäre ja noch schöner. Nicht auszudenken, was das für Folgen hätte. Mal abgesehen von den leicht zu machenden Cracks würdest du damit Hackern Tür und Tor öffnen.
Du kannst allerdings einen Prozess mithilfe einer Windows dll verstecken. Er läuft weiter, aber du findest ihn nur noch im Task Manager. Das ist aber um einiges schwieriger. Den Code dazu müsste ich mir auch erst einmal wieder raussuchen, wenn du das willst. Deswegen hatte ich dir ja auch zu den einfacheren Weg geraten, direkt über deine Windows Form.
MFG derwunner
Similar threads
-
(Web-) Design und webbasierte Sprachen »-
Schneeflocken
(Dec 16th 2007, 4:49pm)
-
Windows XP »-
Browser schließt sich und Pc startet sich neu
(Jan 4th 2007, 11:00pm)