VB6 Shutdown Programm

  • VB6

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von 0Poster.

    VB6 Shutdown Programm

    Guten Abend,

    ich denke bzw. hoffe das meine Frage relativ einfach ist.
    Ich schreibe gerade ein kleines Programm um Windows XP nach einer bestimmten Zeit herunterzufahren.
    Ist auch ganz einfach soweit mit Shell "shutdown.exe -s- t xxx".

    Meine Frage ist nun aber, wie mache ich das wenn ich keine vorgegebene Zeit nutzen möchte, also eine eigene Zeit eingeben. Habe zwar eine Vorstellung:
    Zeit in die Textbox eingeben und dann auf einen Button klicken und das wars (einfacher gesagt also getan :) aber keine wirkliche Ahnung wie ich das durchführen soll.

    Gruss

    0Poster
    Hallo, OPoster.

    1.) Zeitpunkt in eine Textbox eintragen lassen
    2.) Timer-Steuerelement (mit Interval = 1000) jede Sekunde überprüfen, ob der Zeitpunkt erreicht ist.
    3.) Windows herunterfahren

    Ganz simpel.

    mfG,

    Malcolm

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Malcolm“ ()

    Du machst auf die Form eine Textbox, ein Button und einen Timer.
    Timer-Eigenschaft Enabled auf False. Interval bleibt auf 0.

    Dann folgener Code:

    Visual Basic-Quellcode

    1. Private Sub Command1_Click()
    2. Timer1.Interval = Text1.Text * 1000
    3. Timer1.Enabled = True
    4. End Sub
    5. Private Sub Form_Load()
    6. End Sub
    7. Private Sub Timer1_Timer()
    8. Shell "shutdown -s -t 01"
    9. Timer1.Enabled = False
    10. End Sub
    Hallo,

    danke schon mal für die Antworten, aber bei mir klappt das net so wirklich.
    Wie soll ich denn die Uhrzeit da eingeben - in die Textbox?

    Bzw. kann man das auch so machen da man in die Textbox nur die Minutenzahl eingibt bis der PC herunterfahren soll?

    EDIT: Hat sich gearde erledigt. Anfängerfehler. Wenn gewünscht schreib ich den Quelltext hier noch rein wenn er fertig ist.

    Gruss

    0Poster

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „0Poster“ ()

    Hi,

    @HoKe
    Das wird wohl nicht funktionieren. Die maximale Größe von Timer1.Interval = 65535, was mal gerade ner guten Minute entspricht. Alle Werte Größer 65 Sekunden würden Deinen Quellcode zum Absturz bringen. Ausserdem sehe ich dort keinerlei Fehlerkorrektur, wenn jemand mal keine Zahl eingibt.

    @0Poster
    Wenn gewünscht schreib ich den Quelltext hier noch rein wenn er fertig ist.

    Ja bitte. Es gibt sicher mal wieder jemanden der das gleiche oder ein ähnliches Problem hat.


    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de
    Hi auf das Problem mit der 65 Grenze bin ich auch gerade gestossen. Wie kann ich dieses Problem lösen und wie ist das mit der Fehlerkorrektur?

    Bis jetzt sieht das so aus:

    Visual Basic-Quellcode

    1. Option Explicit
    2. Dim zeit As String
    3. Private Sub chk_starten_Click()
    4. zeit = txt_zeit.Text * 1000
    5. Timer1.Enabled = True
    6. Timer1.Interval = zeit
    7. End Sub
    8. Private Sub cmd_txtbox_Click()
    9. zeit = txt_zeit.Text * 1000
    10. Timer1.Enabled = True
    11. Timer1.Interval = zeit
    12. End Sub
    13. Private Sub cmd_1h_Click()
    14. Shell "shutdown.exe -s -f -t 3600"
    15. End Sub
    16. Private Sub cmd_2h_Click()
    17. Shell "shutdown.exe -s -f -t 7200"
    18. End Sub
    19. Private Sub cmd_3h_Click()
    20. Shell "shutdown.exe -s -f -t 10800"
    21. End Sub
    22. Private Sub cmd_4h_Click()
    23. Shell "shutdown.exe -s -f -t 14400"
    24. End Sub
    25. Private Sub cmd_5h_Click()
    26. Shell "shutdown.exe -s -f -t 18000"
    27. End Sub
    28. Private Sub cmd_6h_Click()
    29. Shell "shutdown.exe -s -f -t 21600"
    30. End Sub
    31. Private Sub cmd_abbrechen_Click()
    32. chk_starten.Value = False
    33. Timer1.Enabled = False
    34. Shell "shutdown.exe -a"
    35. End Sub
    36. Private Sub cmd_beenden_Click()
    37. End
    38. End Sub
    39. Private Sub Timer1_Timer()
    40. Shell "shutdown -s -f -t 30"
    41. Timer1.Enabled = False
    42. End Sub


    Gruss

    0Poster
    Hi,

    wozu überhaupt einen Timer ??? Du übergibts doch dem shutdown Befehl in wieviel Sekunden der ShutDown ausgeführt werden soll. Das ist doch mit einer einfachen Berechnung zu ermitteln.

    Bsp. Der Nutzer sagt, der Rechner soll um 14:00 Heruntergefahren werden. Jetzt ist es 13:10. Die Differenz (mit DateDiff zu ermitteln) beträgt 50 Minuten (bzw. 3000 Sekunden). Jetzt wird der Shutdown Befehl zusammengebaut:

    ... "shutdown -s -f -t " & DateDiff("s",cDate(Me.Text1),Time)


    So Fertig. Wo ist das Papier ?? ;)


    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „LaMa5“ ()

    Hmm so könnte man das auch machen.

    Ich würde aber halt lieber die Minutenzahl eingeben lassen. Gibt es da eine Möglichkeit?

    Gruss

    0Poster

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „0Poster“ ()

    Hi,

    dann wirds ja noch einfacherer:

    ... "shutdown -s -f -t " & Val(Me.Text1) * 60


    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de
    Juhu,

    endlich klappt es, vielen Dank!

    Hier ist mein Quelltext:

    Visual Basic-Quellcode

    1. Private Sub chk_starten_Click()
    2. Timer1.Enabled = True
    3. Timer1.Interval = 1
    4. End Sub
    5. Private Sub cmd_1h_Click()
    6. Shell "shutdown.exe -s -f -t 3600"
    7. End Sub
    8. Private Sub cmd_2h_Click()
    9. Shell "shutdown.exe -s -f -t 7200"
    10. End Sub
    11. Private Sub cmd_3h_Click()
    12. Shell "shutdown.exe -s -f -t 10800"
    13. End Sub
    14. Private Sub cmd_4h_Click()
    15. Shell "shutdown.exe -s -f -t 14400"
    16. End Sub
    17. Private Sub cmd_5h_Click()
    18. Shell "shutdown.exe -s -f -t 18000"
    19. End Sub
    20. Private Sub cmd_6h_Click()
    21. Shell "shutdown.exe -s -f -t 21600"
    22. End Sub
    23. Private Sub cmd_abbrechen_Click()
    24. chk_starten.Value = False
    25. Timer1.Enabled = False
    26. Shell "shutdown.exe -a"
    27. End Sub
    28. Private Sub cmd_beenden_Click()
    29. End
    30. End Sub
    31. Private Sub Timer1_Timer()
    32. Shell "shutdown -s -f -t " & Val(Me.txt_zeit) * 60
    33. Timer1.Enabled = False
    34. End Sub


    Für Verbesserungen bin ich offen.

    Gruss und Danke
    0 Poster

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „0Poster“ ()

    OK, wie gesagt, das klappt alles soweit. Meine Frage ist allerdings was das hier bedeutet:

    Shell "shutdown -s -f -t " & Val(Me.txt_zeit) * 60
    Das & ist klar, dass heißt das da noch was drangehängt wird. Denke ich mal :-).
    Aber wofür steht das VAL und das Me
    Es bringt mir ja nix den Code zu verwenden aber nicht zu wissen was dieser bedeutet ;-).

    Gruss

    0Poster

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „LaMa5“ ()

    Hi,

    such mal in der MSDN nach den Befehlen für eine genau Erklärung.

    Val() konvertiert einen übergebenen Wert in eine Ganzzahl, stellt somit also sicher das das Ergebnis eine Zahl ist.

    Me ist nur ein anderer Ausdruck für das aktuelle Formular, also das Formular in dem der Quelltext steht

    txt_zeit ist nichts weiter als ein Textfeld

    Ergo:
    Val(Me.txt_zeit) gibt eine Ganzzahl zurück, die im Textfeld txt_zeit der aktuellen Form eingegeben wurde

    In Deinem Quelltext ist der Timer aber völlig überflüssig. Die folgende Routine hat exakt den gleichen Effekt:

    Visual Basic-Quellcode

    1. Private Sub chk_starten_Click()
    2. Shell "shutdown -s -f -t " & Val(Me.txt_zeit) * 60
    3. End Sub



    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „LaMa5“ ()

    Dankeschön für die Erklärung.

    Das mit dem Timer ist mir auch aufgefallen, habe ich auch schon gefixt.

    Gruss

    0Poster

    Visual Basic-Quellcode

    1. Private Sub chk_starten_Click()
    2. Shell "shutdown.exe -s -f -t " & Val(Me.txt_zeit) * 60
    3. End Sub
    4. Private Sub cmd_1h_Click()
    5. Shell "shutdown.exe -s -f -t 3600"
    6. End Sub
    7. Private Sub cmd_2h_Click()
    8. Shell "shutdown.exe -s -f -t 7200"
    9. End Sub
    10. Private Sub cmd_3h_Click()
    11. Shell "shutdown.exe -s -f -t 10800"
    12. End Sub
    13. Private Sub cmd_4h_Click()
    14. Shell "shutdown.exe -s -f -t 14400"
    15. End Sub
    16. Private Sub cmd_5h_Click()
    17. Shell "shutdown.exe -s -f -t 18000"
    18. End Sub
    19. Private Sub cmd_6h_Click()
    20. Shell "shutdown.exe -s -f -t 21600"
    21. End Sub
    22. Private Sub cmd_abbrechen_Click()
    23. chk_starten.Value = False
    24. Shell "shutdown.exe -a"
    25. End Sub
    26. Private Sub cmd_beenden_Click()
    27. End
    28. End Sub
    Abend,

    habe mal wieder eine kleine Frage ^^. Ich möchte es so machen, dass man auch noch in eine Textbox ein Kommentar eingeben kann und das dann im folgendem Befehl "mit drin" ist. Habe schon einiges ausprobiert aber irgendwie klappt das nicht.

    Visual Basic-Quellcode

    1. Dim Kommentar As Variant
    2. Kommentar = Textbox1.Text
    3. Shell "shutdown.exe -s -f -c Hier dann die Variable -t " & Val(Me.txt_zeit) * 60


    Gruss und Danke

    0Poster
    Hallo,

    und mal wieder ein Problem. Habe schon gegoogelt und hier im Forum geguckt, aber nicht das gefunden was ich suche.
    Ich möchte mit dem Programm Rechner übers Netzwerk herunterfahren (klappt auch) und würde gern eine Rückmeldung bekommen ob es diesen Rechner im Netzwerk gibt.
    Wenn ich den Befehl in der Konsole benutze sagt diese ja Erreichbar oder halt nicht Erreichbar. Kann ich das irgendwie prüfen und ausgeben lassen mit VB6, z.B mit einer MsgBox?

    Gruss

    0Poster


    Edit by LaMa5: Warum postest Du exakt den selben Text am Folgetag noch einmal ??? -> *Beitrag gelöscht*

    EDIT: Hatte den vorhin editiert und diesen Text geschrieben. KA, irgendwie hab ich das nochmal abgesendet. sry

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „0Poster“ ()