Hi all,
As you might remember I posted a post a couple of days back regarding Timers.
The application that I'm making is a program that will restart the computer after a certain period of time. This can be done in one of two ways: Either when the coundown reaches 0, or when the clock reaches a specified time:
As you can see, on the right are hour/minute/second fields. When filled in and "Set" is activated, it will count down and when it gets to 0, restart the computer. This is working fine (You will notice in the source there is no restart code; I'm leaving that until right at the end. Currently it just gives a msgbox).
The problem that I now have is the right hand section: making it shut down at a certain date. With the countdown it was easy; just multiply the hour and minute boxes by 3600 and 60 respectively, and add all 3 together (to get the total in seconds) and just make the timer look to that variable.
The problem here is that I have 3 text boxes (on the right), dropping their entried into 3 "Date" type variables. I now need to somehow make those add together and generate a 24 hour time. That will then be stored, and when the system clock reaches the same as the stored 24hour "Time", activate the code.
HERE is a complete ZIP of the whole project. Below you can also see the whole source code used for the program. Here's an extract of my comments around the area that i'm discussing:
And here's the section of code itself:Code:' I need a way to turn those 3 vars (NOT the I ones. the I ones are ' Just there to allow me to post the shutdown time to TSD) ' into a time on the 24 hour scale. ' From this I will calculate how long left until it reaches that time ' And set that information to "Time remaining until shutdown"
Everything else within that part of the IF statement is the same as it is for the left section.Code:NewHour = TimeH NewMin = TimeM NewSec = TimeS NewHouri = TimeH NewMini = TimeM NewSeci = TimeS ' I need a way to turn those 3 vars (NOT the I ones. the I ones are ' Just there to allow me to post the shutdown time to TSD) ' into a time on the 24 hour scale. ' From this I will calculate how long left until it reaches that time ' And set that information to "Time remaining until shutdown" TotalTime = NewHour + NewMin + NewSec TSD = NewHouri & ":" & NewMini & ":" & NewSeci
Anyone know how I might do this?
Thanks
Code:Option Explicit ' ShutTimer © ArbitalSystems 2005 ' Created on the 12/09/05 Dim AddMins As Date Dim AddHours As Date Dim TotalTime As Date Dim OldTime As Date Dim newTime As Date Dim diff As Long Dim SetUnset As Boolean Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long Private Const MF_BYPOSITION = &H400& Private Sub About_Click() MsgBox "ShutTimer Auto-shutdown application © ArbitalSystems 2005. All rights reserved.", vbInformation, "About" End Sub Private Sub CdownTimer_Timer() newTime = Time diff = DateDiff("s", newTime, OldTime) TTSD.Caption = (diff \ 60) & ":" & _ Format((diff - ((diff \ 60) * 60)), "00") If diff = 0 Then CdownTimer.Enabled = False TTSD.Caption = "" TSD.Caption = "" UTi.Enabled = True UCi.Enabled = True About.Enabled = True SetTimer.Caption = "Set" SetUnset = False ' Your time is UP! Do something! Beep MsgBox "Computer shuts down" End If End Sub Private Sub Exiti_Click() End End Sub Private Sub Explain_Click() Abouti.Visible = True End Sub Private Sub Form_Load() UTi.Value = True RemoveMenus SetUnset = False End Sub Private Sub SetTimer_Click() Dim NewHour As Date Dim NewMin As Date Dim NewSec As Date Dim NewHouri As String Dim NewMini As String Dim NewSeci As String If SetUnset = True Then CdownTimer.Enabled = False TTSD.Caption = "" TSD.Caption = "" UTi.Enabled = True UCi.Enabled = True About.Enabled = True SetTimer.Caption = "Set" SetUnset = False Exit Sub End If If UTi = True Then If Hrs = "" Or Mins = "" Or Secs = "" Then MsgBox "Please enter a value in all 3 boxes. If you don't want to use a box, enter a '0' in it.", , "Incorrect input" Exit Sub End If If Hrs > "500" Then MsgBox "Please enter 500 or less for hours.", , "Error in input" Exit Sub End If NewHour = Hrs NewMin = Mins NewSec = Secs AddMins = NewMin * 60 AddHours = NewHour * 3600 TotalTime = NewSec + AddMins + AddHours OldTime = DateAdd("s", TotalTime, Time) CdownTimer.Enabled = True UTi.Enabled = False UCi.Enabled = False About.Enabled = False SetTimer.Caption = "Stop" SetUnset = True '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ElseIf UCi = True Then '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ If Hrs = "" Or Mins = "" Or Secs = "" Then MsgBox "Please enter a value in all 3 boxes. If you don't want to use a box, enter a '0' in it.", , "Incorrect input" Exit Sub End If If Hrs > "500" Then MsgBox "Please enter 500 or less for hours.", , "Error in input" Exit Sub End If NewHour = TimeH NewMin = TimeM NewSec = TimeS NewHouri = TimeH NewMini = TimeM NewSeci = TimeS ' I need a way to turn those 3 vars (NOT the I ones. the I ones are ' Just there to allow me to post the shutdown time to TSD) ' into a time on the 24 hour scale. ' From this I will calculate how long left until it reaches that time ' And set that information to "Time remaining until shutdown" TotalTime = NewHour + NewMin + NewSec TSD = NewHouri & ":" & NewMini & ":" & NewSeci UTi.Enabled = False UCi.Enabled = False About.Enabled = False SetTimer.Caption = "Stop" SetUnset = True Else MsgBox "Please select an option!", , "Select option" Exit Sub End If End Sub Private Sub UCi_Click() SetTimer.Enabled = True TimeH.Enabled = True TimeM.Enabled = True TimeS.Enabled = True Hrs.Enabled = False Mins.Enabled = False Secs.Enabled = False Hrs.Text = "0" Mins.Text = "0" Secs.Text = "0" End Sub Private Sub UTi_Click() SetTimer.Enabled = True Hrs.Enabled = True Mins.Enabled = True Secs.Enabled = True TimeH.Enabled = False TimeM.Enabled = False TimeS.Enabled = False TimeH.Text = "0" TimeM.Text = "0" TimeS.Text = "0" End Sub Private Sub Hrs_KeyPress(KeyAscii As Integer) If (KeyAscii = 8) Or (KeyAscii = 9) Then Exit Sub If (KeyAscii < 48) Or (KeyAscii > 57) Then KeyAscii = 0 MsgBox "Please input Numbers only" End If End Sub Private Sub Mins_KeyPress(KeyAscii As Integer) If (KeyAscii = 8) Or (KeyAscii = 9) Then Exit Sub If (KeyAscii < 48) Or (KeyAscii > 57) Then KeyAscii = 0 MsgBox "Please input Numbers only" End If End Sub Private Sub ResetTime_Timer() RTime.Caption = Time End Sub Private Sub Secs_KeyPress(KeyAscii As Integer) If (KeyAscii = 8) Or (KeyAscii = 9) Then Exit Sub If (KeyAscii < 48) Or (KeyAscii > 57) Then KeyAscii = 0 MsgBox "Please input Numbers only" End If End Sub Private Sub TimeH_KeyPress(KeyAscii As Integer) If (KeyAscii = 8) Or (KeyAscii = 9) Then Exit Sub If (KeyAscii < 48) Or (KeyAscii > 57) Then KeyAscii = 0 MsgBox "Please input Numbers only" End If End Sub Private Sub TimeM_KeyPress(KeyAscii As Integer) If (KeyAscii = 8) Or (KeyAscii = 9) Then Exit Sub If (KeyAscii < 48) Or (KeyAscii > 57) Then KeyAscii = 0 MsgBox "Please input Numbers only" End If End Sub Private Sub TimeS_KeyPress(KeyAscii As Integer) If (KeyAscii = 8) Or (KeyAscii = 9) Then Exit Sub If (KeyAscii < 48) Or (KeyAscii > 57) Then KeyAscii = 0 MsgBox "Please input Numbers only" End If End Sub Private Sub RemoveMenus() Dim hMenu As Long ' Get the form's system menu handle. hMenu = GetSystemMenu(hWnd, False) DeleteMenu hMenu, 6, MF_BYPOSITION End Sub





Reply With Quote