31290 Posted April 10, 2015 Share Posted April 10, 2015 Hi everyone, Hope you're fine today I'm facing a little issue. I'm sure this might be nothing for you but I can't figure it out by myself. Here's the code (not written by me, credits to supdw2k for this huge help ^^): expandcollapse popup#include <Array.au3> #include <ButtonConstants.au3> #include <ColorConstants.au3> #include <ComboConstants.au3> #Include <Constants.au3> #include <Crypt.au3> #include <Date.au3> #include <File.au3> #Include <FontConstants.au3> #include <GUIConstantsEx.au3> #include <GuiEdit.au3> #include <GuiListView.au3> #include <Misc.au3> #include <MsgBoxConstants.au3> #include <ProgressConstants.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <GuiButton.au3> Global $Images = "C:\Windows\ATL_Laptop\Resources\Images\" Opt("GUIOnEventMode", 1) Global Const $sINIFile = "test.ini" Global $aCheckboxes ManualActions() Func ManualActions() Global $ManualActionsGui = GuiCreate("Automated Task List Suite", 460, 480, -1, -1) GUISetBkColor (0xFFFFFF) GUICtrlCreatePic ($Images & "\SAClogo.jpg", 110, 10, 240, 80) GUICtrlCreateLabel ("---MANUAL ACTIONS---" , 173, 100, 300, -1) GUICtrlSetFont (-1, 8.5, 700, 0) Local $ResetAll = GuiCtrlCreateButton ("Reset Everything", 10 , 440, 97, 30) Local $SaveAndQuit = GUICtrlCreateButton ("Save and Quit", 360, 440, 97, 30) Local $iX = 10, $iY = 120 $aCheckboxes = _ReadINI() For $x = 0 To UBound($aCheckboxes) - 1 Local $idCheckBox = _CreateCheckbox($aCheckboxes[$x][0], $iX, $iY) If _Crypt_HashData($aCheckboxes[$x][0] & "|" & $sINIFile & "|" & $GUI_CHECKED, $CALG_MD5) = $aCheckboxes[$x][1] Then GUICtrlSetState(-1, BitOR($GUI_CHECKED, $GUI_DISABLE)) EndIf $aCheckboxes[$x][0] = $idCheckBox $iY += 20 Next GUISetOnEvent ($GUI_EVENT_CLOSE, "_Exit", $ManualActionsGui) GUICtrlSetOnEvent ($ResetAll, "_ResetAll") GUICtrlSetOnEvent ($SaveAndQuit , "_Exit") GUISetState() While 1 Sleep(10) WEnd EndFunc ;==>GenGUI Func _ResetAll() GUIDelete ($ManualActionsGui) FileDelete ($sINIFile) ManualActions() EndFunc Func _Checked() If GUICtrlRead(@GUI_CtrlId) = 1 Then GUICtrlSetState(@GUI_CtrlId, $GUI_DISABLE) EndFunc ;==>_Checked Func _CreateCheckbox($sLabel, $iX, $iY) Local $idCheckBox = GUICtrlCreateCheckbox($sLabel, $iX, $iY, -1, -1) GUICtrlSetOnEvent(-1, "_Checked") Return $idCheckBox EndFunc ;==>_CreateCheckbox Func _Exit() _WriteINI() Exit EndFunc ;==>_Exit Func _GenINIFile() Local $aCheckboxes[14] = ["Put a label with hostname on the computer?", "Check if AHCI is set in the BIOS", "Add all applications in AD?", "Check the installed drivers?", "Customize all desktop icons?", _ "Restore User's data?", "Connect to the VPN once?", "Update Firefox and Google Chrome ?", "Restore user's Bookmarks?", "Deploy CrashPlanPro, remove new licence and send a mail to the Service Desk?", _ "Check if printers the User needs are present?", "Copy SAPlogin.ini from former Computer (if needed)?", "Encrypt the Disk with PGP?", "Update Remedy database?"] FileClose(FileOpen($sINIFile, 2)) For $x = 0 To UBound($aCheckboxes) - 1 IniWrite($sINIFile, "Checkbox_Labels", $x, $aCheckboxes[$x]) IniWrite($sINIFile, "Checkbox_States", $x, "") Next EndFunc ;==>_GenINIFile Func _ReadINI() If Not FileExists($sINIFile) Then _GenINIFile() Local $aCheckbox_Labels = IniReadSection($sINIFile, "Checkbox_Labels") If @error Then Return SetError(1, 0, 0) ;If INIReadSection Failed Set Error = 1 Local $aCheckbox_States = IniReadSection($sINIFile, "Checkbox_States") If @error Then Return SetError(2, 0, 0) ;If INIReadSection Failed Set Error = 2 Local $aCheckboxes[$aCheckbox_Labels[0][0]][2] For $x = 0 To ($aCheckbox_Labels[0][0] - 1) $aCheckboxes[$x][0] = $aCheckbox_Labels[$x + 1][1] $aCheckboxes[$x][1] = $aCheckbox_States[$x + 1][1] Next Return $aCheckboxes EndFunc ;==>_ReadINI Func _WriteINI() For $x = 0 To UBound($aCheckboxes) - 1 IniWrite($sINIFile, "Checkbox_Labels", $x, GUICtrlRead($aCheckboxes[$x][0], 1)) IniWrite($sINIFile, "Checkbox_States", $x, _Crypt_HashData(GUICtrlRead($aCheckboxes[$x][0], 1) & "|" & $sINIFile & "|" & GUICtrlRead($aCheckboxes[$x][0]), $CALG_MD5)) Next EndFunc ;==>_WriteINI When ran the first time, my buttons are working. But as soon as the Gui is recreated, thzy are not working anymore. I think the came from the _ResetAll function but for me, this should work. I don't know what I'm missing there and I hope you can give me a hand on this Thanks in advance ~~~ Doom Shall Never Die, Only The Players ~~~ Link to comment Share on other sites More sharing options...
Solution argumentum Posted April 10, 2015 Solution Share Posted April 10, 2015 (edited) I don't know what I'm missing there and I hope you can give me a hand on this Thanks in advance there you go: expandcollapse popup#include <Array.au3> #include <ButtonConstants.au3> #include <ColorConstants.au3> #include <ComboConstants.au3> #include <Constants.au3> #include <Crypt.au3> #include <Date.au3> #include <File.au3> #include <FontConstants.au3> #include <GUIConstantsEx.au3> #include <GuiEdit.au3> #include <GuiListView.au3> #include <Misc.au3> #include <MsgBoxConstants.au3> #include <ProgressConstants.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <GuiButton.au3> Global $Images = "C:\Windows\ATL_Laptop\Resources\Images\" Opt("GUIOnEventMode", 1) Global Const $sINIFile = "test.ini" Global $aCheckboxes Global $iRunning = 1 ManualActions() Func ManualActions() Global $ManualActionsGui = GUICreate("Automated Task List Suite", 460, 480, -1, -1) GUISetBkColor(0xFFFFFF) GUICtrlCreatePic($Images & "\SAClogo.jpg", 110, 10, 240, 80) GUICtrlCreateLabel("---MANUAL ACTIONS---", 173, 100, 300, -1) GUICtrlSetFont(-1, 8.5, 700, 0) Local $ResetAll = GUICtrlCreateButton("Reset Everything", 10, 440, 97, 30) Local $SaveAndQuit = GUICtrlCreateButton("Save and Quit", 360, 440, 97, 30) Local $iX = 10, $iY = 120 $aCheckboxes = _ReadINI() For $x = 0 To UBound($aCheckboxes) - 1 Local $idCheckBox = _CreateCheckbox($aCheckboxes[$x][0], $iX, $iY) If _Crypt_HashData($aCheckboxes[$x][0] & "|" & $sINIFile & "|" & $GUI_CHECKED, $CALG_MD5) = $aCheckboxes[$x][1] Then GUICtrlSetState(-1, BitOR($GUI_CHECKED, $GUI_DISABLE)) EndIf $aCheckboxes[$x][0] = $idCheckBox $iY += 20 Next GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit", $ManualActionsGui) GUICtrlSetOnEvent($ResetAll, "_ResetAll") GUICtrlSetOnEvent($SaveAndQuit, "_Exit") GUISetState() $iRunning = 1 While $iRunning Sleep(10) WEnd GUIDelete($ManualActionsGui) FileDelete($sINIFile) ManualActions() EndFunc ;==>ManualActions Func _ResetAll() $iRunning = 0 EndFunc ;==>_ResetAll Func _Checked() If GUICtrlRead(@GUI_CtrlId) = 1 Then GUICtrlSetState(@GUI_CtrlId, $GUI_DISABLE) EndFunc ;==>_Checked Func _CreateCheckbox($sLabel, $iX, $iY) Local $idCheckBox = GUICtrlCreateCheckbox($sLabel, $iX, $iY, -1, -1) GUICtrlSetOnEvent(-1, "_Checked") Return $idCheckBox EndFunc ;==>_CreateCheckbox Func _Exit() _WriteINI() Exit EndFunc ;==>_Exit Func _GenINIFile() Local $aCheckboxes[14] = ["Put a label with hostname on the computer?", "Check if AHCI is set in the BIOS", "Add all applications in AD?", "Check the installed drivers?", "Customize all desktop icons?", _ "Restore User's data?", "Connect to the VPN once?", "Update Firefox and Google Chrome ?", "Restore user's Bookmarks?", "Deploy CrashPlanPro, remove new licence and send a mail to the Service Desk?", _ "Check if printers the User needs are present?", "Copy SAPlogin.ini from former Computer (if needed)?", "Encrypt the Disk with PGP?", "Update Remedy database?"] FileClose(FileOpen($sINIFile, 2)) For $x = 0 To UBound($aCheckboxes) - 1 IniWrite($sINIFile, "Checkbox_Labels", $x, $aCheckboxes[$x]) IniWrite($sINIFile, "Checkbox_States", $x, "") Next EndFunc ;==>_GenINIFile Func _ReadINI() If Not FileExists($sINIFile) Then _GenINIFile() Local $aCheckbox_Labels = IniReadSection($sINIFile, "Checkbox_Labels") If @error Then Return SetError(1, 0, 0) ;If INIReadSection Failed Set Error = 1 Local $aCheckbox_States = IniReadSection($sINIFile, "Checkbox_States") If @error Then Return SetError(2, 0, 0) ;If INIReadSection Failed Set Error = 2 Local $aCheckboxes[$aCheckbox_Labels[0][0]][2] For $x = 0 To ($aCheckbox_Labels[0][0] - 1) $aCheckboxes[$x][0] = $aCheckbox_Labels[$x + 1][1] $aCheckboxes[$x][1] = $aCheckbox_States[$x + 1][1] Next Return $aCheckboxes EndFunc ;==>_ReadINI Func _WriteINI() For $x = 0 To UBound($aCheckboxes) - 1 IniWrite($sINIFile, "Checkbox_Labels", $x, GUICtrlRead($aCheckboxes[$x][0], 1)) IniWrite($sINIFile, "Checkbox_States", $x, _Crypt_HashData(GUICtrlRead($aCheckboxes[$x][0], 1) & "|" & $sINIFile & "|" & GUICtrlRead($aCheckboxes[$x][0]), $CALG_MD5)) Next EndFunc ;==>_WriteINI .. I just fix the loop problem, the rest of the code I did not tweak/correct Edited April 10, 2015 by argumentum 31290 1 Follow the link to my code contribution ( and other things too ). FAQ - Please Read Before Posting. Link to comment Share on other sites More sharing options...
31290 Posted April 10, 2015 Author Share Posted April 10, 2015 Argumentum, Thanks a lot for this, working perfectly argumentum 1 ~~~ Doom Shall Never Die, Only The Players ~~~ Link to comment Share on other sites More sharing options...
BrewManNH Posted April 10, 2015 Share Posted April 10, 2015 Here's a better way, without the recursion of the previous script. expandcollapse popup#include <Array.au3> #include <ButtonConstants.au3> #include <ColorConstants.au3> #include <ComboConstants.au3> #include <Constants.au3> #include <Crypt.au3> #include <Date.au3> #include <File.au3> #include <FontConstants.au3> #include <GUIConstantsEx.au3> #include <GuiEdit.au3> #include <GuiListView.au3> #include <Misc.au3> #include <MsgBoxConstants.au3> #include <ProgressConstants.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <GuiButton.au3> Global $Images = "C:\Windows\ATL_Laptop\Resources\Images\" Opt("GUIOnEventMode", 1) Global Const $sINIFile = "test.ini" Global $aCheckboxes, $bReset = False ManualActions() While 1 If $bReset Then $bReset = False ManualActions() EndIf WEnd Func ManualActions() Global $ManualActionsGui = GUICreate("Automated Task List Suite", 460, 480, -1, -1) GUISetBkColor(0xFFFFFF) GUICtrlCreatePic($Images & "\SAClogo.jpg", 110, 10, 240, 80) GUICtrlCreateLabel("---MANUAL ACTIONS---", 173, 100, 300, -1) GUICtrlSetFont(-1, 8.5, 700, 0) Local $ResetAll = GUICtrlCreateButton("Reset Everything", 10, 440, 97, 30) Local $SaveAndQuit = GUICtrlCreateButton("Save and Quit", 360, 440, 97, 30) Local $iX = 10, $iY = 120 $aCheckboxes = _ReadINI() For $x = 0 To UBound($aCheckboxes) - 1 Local $idCheckBox = _CreateCheckbox($aCheckboxes[$x][0], $iX, $iY) If _Crypt_HashData($aCheckboxes[$x][0] & "|" & $sINIFile & "|" & $GUI_CHECKED, $CALG_MD5) = $aCheckboxes[$x][1] Then GUICtrlSetState(-1, BitOR($GUI_CHECKED, $GUI_DISABLE)) EndIf $aCheckboxes[$x][0] = $idCheckBox $iY += 20 Next GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit", $ManualActionsGui) GUICtrlSetOnEvent($ResetAll, "_ResetAll") GUICtrlSetOnEvent($SaveAndQuit, "_Exit") GUISetState() While Not $bReset Sleep(10) WEnd EndFunc ;==>ManualActions Func _ResetAll() GUIDelete($ManualActionsGui) FileDelete($sINIFile) ;~ ManualActions() $bReset = True EndFunc ;==>_ResetAll Func _Checked() If GUICtrlRead(@GUI_CtrlId) = 1 Then GUICtrlSetState(@GUI_CtrlId, $GUI_DISABLE) EndFunc ;==>_Checked Func _CreateCheckbox($sLabel, $iX, $iY) Local $idCheckBox = GUICtrlCreateCheckbox($sLabel, $iX, $iY, -1, -1) GUICtrlSetOnEvent(-1, "_Checked") Return $idCheckBox EndFunc ;==>_CreateCheckbox Func _Exit() _WriteINI() Exit EndFunc ;==>_Exit Func _GenINIFile() Local $aCheckboxes[14] = ["Put a label with hostname on the computer?", "Check if AHCI is set in the BIOS", "Add all applications in AD?", "Check the installed drivers?", "Customize all desktop icons?", _ "Restore User's data?", "Connect to the VPN once?", "Update Firefox and Google Chrome ?", "Restore user's Bookmarks?", "Deploy CrashPlanPro, remove new licence and send a mail to the Service Desk?", _ "Check if printers the User needs are present?", "Copy SAPlogin.ini from former Computer (if needed)?", "Encrypt the Disk with PGP?", "Update Remedy database?"] FileClose(FileOpen($sINIFile, 2)) For $x = 0 To UBound($aCheckboxes) - 1 IniWrite($sINIFile, "Checkbox_Labels", $x, $aCheckboxes[$x]) IniWrite($sINIFile, "Checkbox_States", $x, "") Next EndFunc ;==>_GenINIFile Func _ReadINI() If Not FileExists($sINIFile) Then _GenINIFile() Local $aCheckbox_Labels = IniReadSection($sINIFile, "Checkbox_Labels") If @error Then Return SetError(1, 0, 0) ;If INIReadSection Failed Set Error = 1 Local $aCheckbox_States = IniReadSection($sINIFile, "Checkbox_States") If @error Then Return SetError(2, 0, 0) ;If INIReadSection Failed Set Error = 2 Local $aCheckboxes[$aCheckbox_Labels[0][0]][2] For $x = 0 To ($aCheckbox_Labels[0][0] - 1) $aCheckboxes[$x][0] = $aCheckbox_Labels[$x + 1][1] $aCheckboxes[$x][1] = $aCheckbox_States[$x + 1][1] Next Return $aCheckboxes EndFunc ;==>_ReadINI Func _WriteINI() For $x = 0 To UBound($aCheckboxes) - 1 IniWrite($sINIFile, "Checkbox_Labels", $x, GUICtrlRead($aCheckboxes[$x][0], 1)) IniWrite($sINIFile, "Checkbox_States", $x, _Crypt_HashData(GUICtrlRead($aCheckboxes[$x][0], 1) & "|" & $sINIFile & "|" & GUICtrlRead($aCheckboxes[$x][0]), $CALG_MD5)) Next EndFunc ;==>_WriteINI If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator Link to comment Share on other sites More sharing options...
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