Victorique Posted December 20, 2013 Posted December 20, 2013 (edited) Hello I have a program here, and i just want to disable the button (gray it out) for 5 seconds, but still have the rest of the program functional. i have tried for so long to try and get this to work, but never can find a way. can you possible help me on this? expandcollapse popup#include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <Crypt.au3> #region ### START Koda GUI section ### Form= $Loginform = GUICreate("Login", 285, 170, 846, 274) $Login = GUICtrlCreateButton("Login", 8, 104, 129, 49); the button i want to Disable $Cancel = GUICtrlCreateButton("Cancel", 144, 104, 129, 49) $PasswordInput = GUICtrlCreateInput("Password", 56, 72, 217, 21, $ES_PASSWORD) $Label1 = GUICtrlCreateLabel("Login form", 104, 8, 73, 23) GUICtrlSetFont(-1, 12, 400, 0, "Calibri") $UsernameInput = GUICtrlCreateInput("Username", 56, 40, 217, 21) GUICtrlCreateLabel("Username:", 0, 40, 55, 17) GUICtrlCreateLabel("Password:", 0, 72, 53, 17) GUISetState(@SW_SHOW) #endregion ### END Koda GUI section ### Global $logintries = 0 While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE, $Cancel Exit Case $Login _Crypt_Startup() $passwordKey = (StringTrimLeft(_Crypt_HashData(GUICtrlRead($PasswordInput), $CALG_SHA1), 2)) $readInputUser = GUICtrlRead($UsernameInput) If $passwordKey == "7110EDA4D09E062AA5E4A390B0A572AC0D2C0220" And $readInputUser == "Test" Then; if user is Test and pass is 1234 then allow MsgBox(0, "", "correct!") Else MsgBox(0, "", "Wrong Username/Password") $logintries += 1 If $logintries >= 3 Then ; after 3 incorrect tries, disable button GUISetState(@SW_DISABLE,$Loginform) MsgBox(0, "To many fail login", "You have enterd the password or username more than 3 times, please wait 5 seconds before you can enter it again") WinActivate($Loginform) GUISetState(@SW_ENABLE,$Loginform) GUICtrlSetState($Login,$GUI_DISABLE) sleep(5000) GUICtrlSetState($Login,$GUI_ENABLE) EndIf EndIf _Crypt_Shutdown() EndSwitch WEnd I have a button $Login, and I wish to disable it after 3 incorrect tries (If $logintries >= 3 Then) at the moment, i have a 5 second sleep, but I don't want the whole program to stop, just that button. any help would be good Sorry if this sounds simple and I am jsut being stupid, I just can't figure it out Edited December 20, 2013 by Victorique
Solution Rogue5099 Posted December 20, 2013 Solution Posted December 20, 2013 GUICtrlSetState($Login, $GUI_DISABLE) and then AdlibRegister("", 5000). When you want to start the 5 seconds of disable. Create Func that has GUICtrlSetState($Login, $GUI_ENABLE) then AdlibUnRegister Victorique 1 My projects: Inventory / Mp3 Inventory, Computer Stats
Victorique Posted December 20, 2013 Author Posted December 20, 2013 (edited) GUICtrlSetState($Login, $GUI_DISABLE) and then AdlibRegister("", 5000). When you want to start the 5 seconds of disable. Create Func that has GUICtrlSetState($Login, $GUI_ENABLE) then AdlibUnRegister Hello, thank you, it did work, I only have one question, as I never used Adlib before. what does the UnRegister do? why does it need to be? I have this; While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE, $Cancel Exit Case $Login _Crypt_Startup() $passwordKey = (StringTrimLeft(_Crypt_HashData(GUICtrlRead($PasswordInput), $CALG_SHA1), 2)) $readInputUser = GUICtrlRead($UsernameInput) If $passwordKey == "7110EDA4D09E062AA5E4A390B0A572AC0D2C0220" And $readInputUser == "Test" Then MsgBox(0, "", "correct!") Else MsgBox(0, "", "Wrong Username/Password") $logintries += 1 If $logintries >= 3 Then MsgBox(0, "To many fail login", "You have enterd the password or username more than 3 times, please wait 5 seconds before you can enter it again") GUICtrlSetState($Login, $GUI_DISABLE) AdlibRegister("_enableButton", 5000) EndIf EndIf _Crypt_Shutdown() EndSwitch WEnd Func _enableButton() GUICtrlSetState($Login, $GUI_ENABLE) EndFunc ;==>_enableButton and it works fine without the UnRegister :"O Edited December 20, 2013 by Victorique
FlashpointBlack Posted December 20, 2013 Posted December 20, 2013 Basically, AdlibRegister() registers a function to be called every X miliseconds. You create the button as disabled and then tell the function to enable the button to run once every 5 seconds. After it's first run, the "Run every 5 seconds" command is disabled, so the button is disabled, waits 5 seconds, and re-enabled. Your code works even though the unregister command is not there because every 5 seconds, it's still setting the button to be enabled. If you were to put code to try to disable the button again, 5 seconds later (or less depending on the period of time that has passed) it would be re-enabled. again because the code is constantly being executed. Victorique 1
Victorique Posted December 20, 2013 Author Posted December 20, 2013 Basically, AdlibRegister() registers a function to be called every X miliseconds. You create the button as disabled and then tell the function to enable the button to run once every 5 seconds. After it's first run, the "Run every 5 seconds" command is disabled, so the button is disabled, waits 5 seconds, and re-enabled. Your code works even though the unregister command is not there because every 5 seconds, it's still setting the button to be enabled. If you were to put code to try to disable the button again, 5 seconds later (or less depending on the period of time that has passed) it would be re-enabled. again because the code is constantly being executed. Thank you, this makes sense I just added the AdlibUnRegister("_enableButton") inside the function so when it is called, it will unregister it. thank you lots ♥
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