Elzie Posted May 24, 2015 Posted May 24, 2015 (edited) Hi all and thank you for your help. I have been working on a log-out for a gui and some times this code will not work. How do I get past AM and PM?Edit 1 Ok i think I have it. Thanks Valuater https://www.autoitscript.com/wiki/Snippets_(_Time_%26_Date_)Edit 2 Still not there... Please help.expandcollapse popup#include <ButtonConstants.au3> #include <DateTimeConstants.au3> #include <date.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Opt("GUIOnEventMode", 1) $Form1 = GUICreate("Time Machine", 252, 117, 2421, 445) GUISetBkColor(0xA6CAF0) GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit") $Checkbox1 = GUICtrlCreateCheckbox("Exit GUI ", 24, 24, 105, 25) $Date1 = GUICtrlCreateDate(" ", 136, 24, 98, 24, $DTS_TIMEFORMAT) $Label1 = GUICtrlCreateLabel("00:00:00 ", 136, 72, 93, 20) GUIctrlSetData($Label1, _Time()) $Button1 = GUICtrlCreateButton("Start", 24, 72, 75, 25) GUICtrlSetOnEvent($Button1, "_Func_1") $Button2 = GUICtrlCreateButton("Stop", 24, 72, 75, 25) GUICtrlSetOnEvent($Button2, "_Func_2") GUICtrlSetState($Button2, $GUI_HIDE) GUISetState(@SW_SHOW) GUIRegisterMsg($WM_COMMAND, "_COMMAND_STOP") Global $stop = 0; set exitloop flag While 1 Sleep(100) WEnd Func _Func_1() GUICtrlSetState($Button1, $GUI_HIDE); Hide and show start and stop GUICtrlSetState($Button2, $GUI_SHOW) While 1 Sleep(1000) If $stop <> 0 Then ; set exitloop Return EndIf If _IsChecked($Checkbox1) Then; check for checkbox to exit Local $set = GUICtrlRead($Date1) Local $tm = _Time() If $set < $tm Then Exit EndIf EndIf GUICtrlSetData($Label1, $tm ); set lable time WEnd EndFunc ;==>_Func_1 Func _Time() Local $hour = @HOUR, $AMPM = "AM" If $hour > 11 Then $AMPM = "PM" If $hour = 0 Then $hour = 12 If $hour > 12 Then $hour -= 12 Return $hour & ":" & @MIN & ":" & @SEC & " " & $AMPM EndFunc ;==>_Time Func _Func_2();====================================== Set button 1 to show and hide button 2 GUICtrlSetState($Button2, $GUI_HIDE) GUICtrlSetState($Button1, $GUI_SHOW) $stop = 0 EndFunc ;==>_Func_2 Func _IsChecked($idControlID);===================== Look for Checkbox ====================== Return BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED EndFunc ;==>_IsChecked Func _COMMAND_STOP($hWnd, $Msg, $wParam, $lParam); Set $Interrupt to stop loop If BitAND($wParam, 0x0000FFFF) = $Button2 Then $stop = 1 Return $GUI_RUNDEFMSG EndFunc ;==> _COMMAND_STOP Func _Exit() Exit EndFunc ;==>_Exit Edited May 31, 2015 by Elzie Fix
Elzie Posted May 31, 2015 Author Posted May 31, 2015 (edited) Help ... I think i need to add a date for it to work. Edited May 31, 2015 by Elzie ask for help on date
Moderators Melba23 Posted May 31, 2015 Moderators Posted May 31, 2015 Elzie,How about this?expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Date.au3> Opt("GUIOnEventMode", 1) Global $bRun = False, $iSec = @SEC $hGUI = GUICreate("Time Machine", 252, 117) GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit") $cCheck = GUICtrlCreateCheckbox("Exit GUI ", 24, 24, 105, 25) $cDate = GUICtrlCreateDate(" ", 136, 24, 98, 24, $DTS_TIMEFORMAT) $cLabel = GUICtrlCreateLabel(_Time(1), 136, 72, 93, 20) $cButton = GUICtrlCreateButton("Start", 24, 72, 75, 25) GUICtrlSetOnEvent($cButton, "_Func_1") GUISetState(@SW_SHOW) While 1 Sleep(10) ; Do we need to check? If $bRun Then ; Check box checked and times match? If GUICtrlRead($cCheck) = $GUI_CHECKED And _Time() = GUICtrlRead($cDate) Then MsgBox($MB_SYSTEMMODAL, "Hi", "Exiting") EndIf EndIf ; Time to update the label? If $iSec <> @SEC Then GUICtrlSetData($cLabel, _Time(1)) $iSec = @SEC EndIf WEnd Func _Time($iMode = 0) Switch $iMode Case 0 ; 24 hr Return @HOUR & ":" & @MIN & ":" & @SEC Case 1 ; 12 hr $sHour = @HOUR $sAMPM = "AM" If $sHour > 12 Then $sHour -= 12 $sAMPM = "PM" EndIf Return $sHour & ":" & @MIN & ":" & @SEC & " " & $sAMPM EndSwitch EndFunc Func _Func_1() Switch GUICtrlRead($cButton) Case "Start" GUICtrlSetData($cButton, "Stop") Case "Stop" GUICtrlSetData($cButton, "Start") EndSwitch $bRun = Not $bRun EndFunc ;==>_Func_1 Func _Exit() Exit EndFunc ;==>_ExitM23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Elzie Posted May 31, 2015 Author Posted May 31, 2015 Thank you so much for your help Melba, but it's still not quite there yet. I get the wrong time up on this and will it go into the next day? I like the idea of just changing the data on the button instead of hiding it, looks cleaner. ThanksElzie
Moderators Melba23 Posted May 31, 2015 Moderators Posted May 31, 2015 Elzie,I get the wrong time up on thisCan you explain more clearly - what exactly is "wrong" with the time display?will it go into the next day?Yes, you can set the time 23:59:59 in advance and it will wait patiently.M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Elzie Posted May 31, 2015 Author Posted May 31, 2015 Sorry, The second time I ran it the time did display correctly but it would not close the gui. Will it run past pm to am ( from say the 31st to the 1st.) Again thanks for your help. Best RegardsElzie
Moderators Melba23 Posted May 31, 2015 Moderators Posted May 31, 2015 Elzie,As there is never a check of the date there is no reason why it would not work over the end of a month.but it would not close the guiAre you saying that it still does not work as you wish? Can you reproduce the problem for me to debug as it worked perfectly when I tested it.M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Elzie Posted May 31, 2015 Author Posted May 31, 2015 (edited) I can not get this function to work.Func _Time($iMode = 0) Switch $iMode Case 0 ; 24 hr Return @HOUR & ":" & @MIN & ":" & @SEC Case 1 ; 12 hr $sHour = @HOUR $sAMPM = "AM" If $sHour > 12 Then $sHour -= 12 $sAMPM = "PM" EndIf Return $sHour & ":" & @MIN & ":" & @SEC & " " & $sAMPM EndSwitch EndFunc ;==>_TimeBut if I change it to this Func _Time( ) Local $hour = @HOUR, $AMPM = "AM" If $hour > 11 Then $AMPM = "PM" If $hour = 0 Then $hour = 12 If $hour > 12 Then $hour -= 12 Return $hour & ":" & @MIN & ":" & @SEC & " " & $AMPM EndFunc ;==>_TimeIt works. Not sure why.expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Date.au3> Opt("GUIOnEventMode", 1) Global $bRun = False, $iSec = @SEC $hGUI = GUICreate("Time Machine", 252, 117) GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit") $cCheck = GUICtrlCreateCheckbox("Exit GUI ", 24, 24, 105, 25) $cDate = GUICtrlCreateDate(" ", 136, 24, 98, 24, $DTS_TIMEFORMAT) $cLabel = GUICtrlCreateLabel(_Time( ), 136, 72, 93, 20) $cButton = GUICtrlCreateButton("Start", 24, 72, 75, 25) GUICtrlSetOnEvent($cButton, "_Func_1") GUISetState(@SW_SHOW) While 1 Sleep(10) ; Do we need to check? If $bRun Then ; Check box checked and times match? If GUICtrlRead($cCheck) = $GUI_CHECKED And _Time() = GUICtrlRead($cDate) Then MsgBox($MB_SYSTEMMODAL, "Hi", "Exiting") Exit EndIf EndIf ; Time to update the label? If $iSec <> @SEC Then GUICtrlSetData($cLabel, _Time( )) $iSec = @SEC EndIf WEnd Func _Time( ) Local $hour = @HOUR, $AMPM = "AM" If $hour > 11 Then $AMPM = "PM" If $hour = 0 Then $hour = 12 If $hour > 12 Then $hour -= 12 Return $hour & ":" & @MIN & ":" & @SEC & " " & $AMPM EndFunc ;==>_Time ;Func _Time($iMode = 0) ; Switch $iMode ; Case 0 ; 24 hr ; Return @HOUR & ":" & @MIN & ":" & @SEC ; Case 1 ; 12 hr ; $sHour = @HOUR ; $sAMPM = "AM" ; If $sHour > 12 Then ; $sHour -= 12 ; $sAMPM = "PM" ; EndIf ; Return $sHour & ":" & @MIN & ":" & @SEC & " " & $sAMPM ; EndSwitch ;EndFunc ;==>_Time Func _Func_1() Switch GUICtrlRead($cButton) Case "Start" GUICtrlSetData($cButton, "Stop") Case "Stop" GUICtrlSetData($cButton, "Start") EndSwitch $bRun = Not $bRun EndFunc ;==>_Func_1 Func _Exit() Exit EndFunc ;==>_Exit Edit 1 I may need to update autoit.ThanksElzie Edited May 31, 2015 by Elzie
Moderators Melba23 Posted May 31, 2015 Moderators Posted May 31, 2015 Elzie,But if I change it to this [...] It works. Not sure why.Then I suggest you stick with the function that works.M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Elzie Posted May 31, 2015 Author Posted May 31, 2015 Thank you Melba for your forbearance. I will read more on ( guictrlcreatedate ) And try to get a working function, on time, that works with a OnEvent gui. Best RegardsElzie
Moderators Melba23 Posted June 1, 2015 Moderators Posted June 1, 2015 Elzie,I am really surprised to hear you say that the function you use works - it returns a 12hr time format and the date control gives a 24hr format so I fail to see how the 2 match outside the 1-11 AM bracket. Why are you so fixed on having the label in 12hr format?I have simplified the _Time function - see if this works for you:expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Date.au3> Opt("GUIOnEventMode", 1) Global $bRun = False, $iSec = @SEC $hGUI = GUICreate("Time Machine", 252, 117) GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit") $cCheck = GUICtrlCreateCheckbox("Exit GUI ", 24, 24, 105, 25) $cDate = GUICtrlCreateDate(" ", 136, 24, 98, 24, $DTS_TIMEFORMAT) $cLabel = GUICtrlCreateLabel(_Time(), 136, 72, 93, 20) $cButton = GUICtrlCreateButton("Start", 24, 72, 75, 25) GUICtrlSetOnEvent($cButton, "_Func_1") GUISetState(@SW_SHOW) While 1 Sleep(10) ; Do we need to check? If $bRun Then ; Check box checked and times match? If GUICtrlRead($cCheck) = $GUI_CHECKED And @HOUR & ":" & @MIN & ":" & @SEC = GUICtrlRead($cDate) Then MsgBox($MB_SYSTEMMODAL, "Hi", "Exiting") Exit EndIf EndIf ; Time to update the label? If $iSec <> @SEC Then GUICtrlSetData($cLabel, _Time()) $iSec = @SEC EndIf WEnd Func _Time() $iHour = @HOUR $sAMPM = "AM" If $iHour > 12 Then $sHour = String($iHour - 12) $sAMPM = "PM" ElseIf $iHour = 0 Then $sHour = "12" Else $sHour = StringRight($iHour, 1) EndIf Return $sHour & ":" & @MIN & ":" & @SEC & " " & $sAMPM EndFunc ;==>_Time Func _Func_1() Switch GUICtrlRead($cButton) Case "Start" GUICtrlSetData($cButton, "Stop") Case "Stop" GUICtrlSetData($cButton, "Start") EndSwitch $bRun = Not $bRun EndFunc ;==>_Func_1 Func _Exit() Exit EndFunc ;==>_ExitM23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now