Een ShutDown programmatje maken

Status
Niet open voor verdere reacties.

kantersjojo

Gebruiker
Lid geworden
29 nov 2008
Berichten
130
Beste Helpers aangezien ik toch niet echt heel erg ver ga komen met mijn applicatie dacht ik laat ik het maar hier vragen.

Ik wil een programmatje maken dat standaart opstart met windows en dan 10 uur wacht. en dan windows weer opnieuw opstart.

Terwijl dit programmatje opstart moet hij een .bat openen maar dat snap ik allemaal wel.

bijv. deze codes komen erin voor:

Process.start("nummer1.bat");

System.Diagnostics.Process.Start("Shutdown", "/r");

Timer ding enz.

Ik ben hier nog steeds nieuw in maar ik probeer steeds meer te leren dus houd het alstjeblief een beetje makkelijk ;)

PS. nadat ik dit getyp heb ben ik weg voor de avond. Ik kom later weer terug dus ik hoop dat iemand mij dan heeft gehlpen (Hint Hint) xD
 
Laatst bewerkt:
uhm ja, maar je hebt de 'codes' zelf dus al uitgevogeld, wat is je vraag nou precies? :p Wil je weten hoe je de timer 10 uur laat wachten? (heh, zet het interval op 3600000 xD)
 
uhm ja, maar je hebt de 'codes' zelf dus al uitgevogeld, wat is je vraag nou precies? :p Wil je weten hoe je de timer 10 uur laat wachten? (heh, zet het interval op 3600000 xD)

ja maar moet ik dan doen van

When timer.interval = 0 System.Diagnostics.Process.Start("Shutdown", "/r");
 
Als je je timer hebt toegevoegd , kijk dan bij je timer_tick event als je interval op 1000 zou staan wordt het timer_tick event getriggerd na 1 sec (1000ms). Daarin kan je dan aangeven wat ie moet doen. In jouw geval dus restarten.
 
Mooi volgens mij werkt het maar nu wil ik graag dat er in digitale tijd komt te staan hoelang het duurt voordat er word afgesloten.(Count down)
 
Je maakt dan een 2e timer (timer2) die je de tijd van restarten (22:00:00) laat vergelijken met de huidige tijd.

Code:
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Timer2.Enabled = True
        Timer2.Interval = 1000

    End Sub

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick

        Dim verschil As New TimeSpan(Now.Hour - 22, Now.Minute - 0, Now.Second - 0)
        Label1.Text = FormatDateTime(Math.Abs(verschil.Hours) & ":" & Math.Abs(verschil.Minutes) & ":" & Math.Abs(verschil.Seconds), DateFormat.LongTime)


    End Sub
End Class
 
Je maakt dan een 2e timer (timer2) die je de tijd van restarten (22:00:00) laat vergelijken met de huidige tijd.

Code:
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Timer2.Enabled = True
        Timer2.Interval = 1000

    End Sub

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick

        Dim verschil As New TimeSpan(Now.Hour - 22, Now.Minute - 0, Now.Second - 0)
        Label1.Text = FormatDateTime(Math.Abs(verschil.Hours) & ":" & Math.Abs(verschil.Minutes) & ":" & Math.Abs(verschil.Seconds), DateFormat.LongTime)


    End Sub
End Class

uhm wat bedoel je met 22:00 uur? het gaat om de 10 uur opnieuw opstarten. Ik heb het nu zover dat het opnieuw opstart na 10uur. Niet (22:00 uur) maar gewoon om de 10 uur. (Dat is ook wat ik wil maar nu wil ik gewoon dat er een Digitale tijd bij komt die aftelt. (Van 10 uur naar 0 uur) zodat je ziet over heoveel minuten het opnieuw op zal starten.

Mischien als je msn hebt mij willen adde.
kantersjojo @ hotmail com
 
Laatst bewerkt:
Oh sorry , dan had ik je verkeerd begrepen.

In dat geval heb je aan 1 timer en de laatste starttijd (LastBootUpTime) genoeg. (wel je System.Management resource toevoegen)

Code:
Public Class Form1

    Dim searcher As New Management.ManagementObjectSearcher("SELECT LastBootUpTime FROM Win32_OperatingSystem WHERE Primary='true'")
    Dim QueryCollection As Management.ManagementObjectCollection = searcher.Get
    Dim LastReboot As Date

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        For Each m As Management.ManagementObject In QueryCollection
            LastReboot = Management.ManagementDateTimeConverter.ToDateTime(m("LastBootUpTime")).AddHours(10.0)
        Next

        Timer1.Enabled = True
        Timer1.Interval = 1000

    End Sub

    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        Label1.Text = FormatDateTime(LastReboot.Subtract(Now).ToString, DateFormat.LongTime)

        If Label1.Text = "0:00:00" Then
            Timer1.Enabled = False
            '[Je reboot code hier]
        End If

    End Sub

End Class
 
Laatst bewerkt:
Oh sorry , dan had ik je verkeerd begrepen.

In dat geval heb je aan 1 timer en de laatste starttijd (LastBootUpTime) genoeg. (wel je System.Management resource toevoegen)

Code:
Public Class Form1

    Dim searcher As New Management.ManagementObjectSearcher("SELECT LastBootUpTime FROM Win32_OperatingSystem WHERE Primary='true'")
    Dim QueryCollection As Management.ManagementObjectCollection = searcher.Get
    Dim LastReboot As Date

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        For Each m As Management.ManagementObject In QueryCollection
            LastReboot = Management.ManagementDateTimeConverter.ToDateTime(m("LastBootUpTime")).AddHours(33.0)
        Next

        Timer1.Enabled = True
        Timer1.Interval = 1000

    End Sub

    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        Label1.Text = FormatDateTime(LastReboot.Subtract(Now).ToString, DateFormat.LongTime)

        If Label1.Text = "0:00:00" Then
            Timer1.Enabled = False
            '[Je reboot code hier]
        End If

    End Sub

End Class

als ik die bovenste gelijk invul dan krijg ik dit: Type 'Management.ManagementObjectCollection' is not defined (Krijgt zo'n blauw streepje eronder
 
Nog een foutje in de code .addHours(33.0) moet natuurlijk .addHours(10.0) zijn
 
Laatst bewerkt:
dat kan , hij kijkt naar de tijd van de laatste reboot. (4 uur terug kan dat?)

heb je die .addhours nog aangepast zoals ik zei in een eerder antwoord?

System.Management.Instrumention geadd maar maakt dat uit?
- ja dat maakt uit.

klik in je solutionexplorer op de 'show all files' button
dan op resources en delete de system.management.instrumentation
en voeg daarna juiste toe.

EDIT: ooh w8 hij blijft maar aftellen is er een manier om bij Form1_Load the krijgen dat hij het weer reset?

waarom zou je dat willen , je wil toch dat ie iedere 10 uur reboot of niet?
zoals ik al zei , de date van de laatste reboot + 10 uur is de tijd die hij aftelt. Daar kan je niet mee sleutelen
als die op 0 staat zal ie de timer stoppen en rebooten.
 
Laatst bewerkt:
dat kan , hij kijkt naar de tijd van de laatste reboot. (4 uur terug kan dat?)

heb je die .addhours nog aangepast zoals ik zei in een eerder antwoord?


- ja dat maakt uit.

klik in je solutionexplorer op de 'show all files' button
dan op resources en delete de system.management.instrumentation
en voeg daarna juiste toe.



zoals ik al zei , de date van de laatste reboot + 10 uur is de tijd die hij aftelt.
als die op 0 staat zal ie de timer stoppen en rebooten.

1. het klop ja 4 uur terug

2. Ja ik heb die 33 naar 10 verandert

3. Dat solution ding heb ik weg gehaald

4. Is er een mogelijk heid om als je het progje handmatig afsluit en daarna weer opstart dat hij dan weer begint bij 10 uur af te tellen?

Als het niet anders kan bijv met een knop reset time ofzo. Maar het liefste wil ik dat hij reset bij form1_load
 
Laatst bewerkt:
zoals ik al zei , hij kijkt nu naar de laatste reboot tijd, niet de applicatie sessie tijd.
 
Als ik dat geweten had ... dan had ik geen moeite gedaan om die ***** management code voor je te schrijven. Maar goed ,hou er wel rekening mee dat ie pas 10 uur na het starten van je programma gaat rebooten dan, en niet 10 uur na de laatste reboot.

Code:
Public Class Form1

    Dim LastStart As Date

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        LastStart = Now().AddHours(10.0)

        Timer1.Enabled = True
        Timer1.Interval = 1000
    End Sub
    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Label1.Text = FormatDateTime(LastStart.Subtract(Now).ToString, DateFormat.LongTime)
        If Label1.Text = "0:00:00" Then
            Timer1.Enabled = False
            '[Je reboot code hier]
        End If
    End Sub

End Class
 
Als ik dat geweten had ... dan had ik geen moeite gedaan om die ***** management code voor je te schrijven. Maar goed ,hou er wel rekening mee dat ie pas 10 uur na het starten van je programma gaat rebooten dan, en niet 10 uur na de laatste reboot.

Code:
Public Class Form1

    Dim LastStart As Date

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        LastStart = Now().AddHours(10.0)

        Timer1.Enabled = True
        Timer1.Interval = 1000
    End Sub
    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Label1.Text = FormatDateTime(LastStart.Subtract(Now).ToString, DateFormat.LongTime)
        If Label1.Text = "0:00:00" Then
            Timer1.Enabled = False
            '[Je reboot code hier]
        End If
    End Sub

End Class

Heel erg sorry. Ik dacht dat ik mijzelf wel duidelijk had gemaakt. Maar goed, mischien was dat nog handig voor iemand die dat probeert te google'. Ik zit nu op school maar als ik thuis kom is het eerste wat ik doe ff kijken of het lukt ! Nogmaals erg bedankt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan