Shutdowntimer

  • VB.NET

Es gibt 43 Antworten in diesem Thema. Der letzte Beitrag () ist von Vatter.

    Shutdowntimer

    Hi ich schreibe gerade einen Shutdowntimer und habe das Problem, wenn ich den Start-Button anklicke passiert nichts (außer die Label1 veränderung).

    Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. If TextBox1.Text = "0" And TextBox2.Text = "0" And TextBox3.Text = "0" Then
    3. MsgBox("Please enter a Time to start!")
    4. Timer3.Enabled = False
    5. ElseIf TextBox1.Text = "0" And TextBox2.Text = "0" Then
    6. Timer3.Interval = TextBox3.Text * 1000
    7. Timer3.Enabled = True
    8. ElseIf TextBox1.Text = "0" And TextBox3.Text = "0" Then
    9. Timer3.Interval = TextBox2.Text * 60000
    10. Timer3.Enabled = True
    11. ElseIf TextBox2.Text = "0" And TextBox3.Text = "0" Then
    12. Timer3.Interval = TextBox1.Text * 36000000
    13. Timer3.Enabled = True
    14. Else : Timer3.Interval = TextBox1.Text * 36000000 + TextBox2.Text * 60000 + TextBox3.Text * 1000
    15. Timer3.Enabled = True
    16. End If
    17. Label5.ForeColor = Color.Green
    18. Label5.Text = "Enabled"
    19. Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick
    20. If RadioButton1.Checked = True Then
    21. System.Diagnostics.Process.Start("shutdown", "-s -t 0")
    22. ElseIf RadioButton2.Checked = True Then
    23. System.Diagnostics.Process.Start("shutdown", "-l -t 0")
    24. ElseIf RadioButton3.Checked = True Then
    25. System.Diagnostics.Process.Start("shutdown", "-r -t 0")
    26. End If
    27. End Sub

    Gugi schrieb:

    MB-Tech schrieb:

    Versuch es entweder mal mit Shell() oder dem kompletten Pfad zu der shutdown.exe

    Shell() ist veraltet. mach mal statt

    VB.NET-Quellcode

    1. Process.Start("shutdown.exe", "-s")

    das:

    VB.NET-Quellcode

    1. Process.Start("shutdown.exe -s")


    lg Gugi



    Hat wieder nicht funktioniert...

    MB-Tech schrieb:


    Versuch es entweder mal mit Shell() oder dem kompletten Pfad zu der shutdown.exe


    Habe ich auch schon probiert und hat auch nicht funktioniert, aber danke!
    Dann denke ich mal das der Rest vom Code nicht funkt....

    Teste doch einfach mal aus:

    [/vb]
    MsgBox("Es geht!")

    [/vb]

    An die Stelle vom Shutdown...
    HI.

    Folgendes sollte funktionieren:


    VB.NET-Quellcode

    1. Dim p As New Process
    2. Dim pi As New ProcessStartInfo
    3. pi.Arguments = "-i" 'hier deine Argumente
    4. pi.FileName = "shutdown"
    5. p.StartInfo = pi
    6. p.Start()



    //EDIT Ausserdem Rechnest du mit String:

    Statt Textbox2.Text * 60000 Schreibe

    Int32.Parse(Textbox2.Text) * 60000

    Oder noch besser mit TryParse oder Try Catch um falsche Eingaben wie Buchstaben/Sonderzeichen abzufangen.

    Gruss Mono
    Das ist meine Signatur und sie wird wunderbar sein!

    Mono schrieb:

    HI.

    //EDIT Ausserdem Rechnest du mit String:

    Statt Textbox2.Text * 60000 Schreibe

    Int32.Parse(Textbox2.Text) * 60000

    Oder noch besser mit TryParse oder Try Catch um falsche Eingaben wie Buchstaben/Sonderzeichen abzufangen.

    Gruss Mono


    DAnke!
    Ich werde das versuchen.
    Wie verwende ich die2 Try Befehle?

    _iNDEX schrieb:

    Ok hab ich gemacht, und es geht wirklich nicht ;(
    Ja also liegt es jetzt nicht mehr am Code für den Shutdown...

    Mono schrieb:

    HI.


    //EDIT Ausserdem Rechnest du mit String:

    Statt Textbox2.Text * 60000 Schreibe

    Int32.Parse(Textbox2.Text) * 60000

    Oder noch besser mit TryParse oder Try Catch um falsche Eingaben wie Buchstaben/Sonderzeichen abzufangen.

    Gruss Mono


    Habe das mit dem Int32.Parse(Textbox2.Text) * 60000 probiert hat aber auch nicht geklappt...
    1. Schreibe mal in die 1. Zeile deiner Anwendung "Option Strict On"
    Du wirst überrascht sein, was dann alles wegen mieser Typkonvertierungen unterstrichen wird. Wenn du da dann den Mauszeiger drüberhängst bekommst du auch die Lösungen angezeigt (Cint(Textbox.text)). Wobei Integer.Tryparse zu bevorzugen ist.
    2. Um nicht bei jeder Else-Verzweigung erneut konvertieren zu müssen, soltest du als erstes alle deine TBs in je einer Integer-Variablen speichern und diese in den Else-Zweigen verwenden.
    3. Beachte außerdem bei der Konvertierung auch Integer.MaxValue = 2147483648. Ich weis ja nicht, was in deinen Textboxen für Zahlen drin stehen. Bei 60 x 36000000 is nähmlich schon Sense. Setze sonst den Timer in einen Intervall=1000 (1s) und erstelle dir eine globale Counter-Variable, die mit dem Timer runtergezählt wird. Du kannst dir dann auch Zähler für Sekunden, Minuten und Stunden erstellen. (alternativ mit Timespan und Ticks arbeiten)
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:

    Der Timer wird doch mit


    Visual Basic Quellcode

    1



    Timer3.Enabled = True


    gestartet :o

    oO erst zur Sicherheit nachgucken, dann posten, Start gibt es zwar bei VB 6 noch nicht, bei .Net jedoch schon...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---