Вот моя на полу рабочая программа
Вот ini файл откуда настройки считываются
Данная программа должна прочитать ini файл и создать кучу checkbox'ов. И потом, когда пользователь нажмет Применить, внести изменения в реестр в зависимости от того какие checkbox'ы отмечены.
Вопрос 1
Можно ли это всё как-то упростить?
Вопрос 2
Программа не правильно работает, работает только первый checkbox, зато работает как все сразу. В чём ошибка и как исправить?
Код:
#include <GUIConstants.au3>
$hGUI = GUICreate("", 410, 450, 278, 149)
CreateCheakBoxOrIniFile('files.ini')
$Apply = GUICtrlCreateButton("&Применить", 6, 416, 75, 25, 0)
$Exit = GUICtrlCreateButton("&Выход", 230, 416, 75, 25, 0)
$About = GUICtrlCreateButton("&О программе", 312, 416, 91, 25, 0)
$Reset = GUICtrlCreateButton("&Перезапустить Explorer", 88, 416, 134, 25, 0)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $Exit
Exit
Case $Apply
CheakMark('files.ini')
EndSwitch
WEnd
Func CreateCheakBoxOrIniFile($IniFileName)
Local $IniSections = IniReadSectionNames($IniFileName)
If @error Then
MsgBox(4096, "Ошибка!!!", "Не найден файл конфигураций.")
Else
Local $iTop = 20
For $i = 1 To $IniSections[0]
$NameButton = IniRead($IniFileName, $IniSections[$i],"Name","Ошибка!!!")
Assign($IniSections[$i], GUICtrlCreateCheckbox($NameButton, 20, $iTop), 2)
$iTop += 25
Next
EndIf
EndFunc
Func CheakMark($IniFileName)
Local $IniSections = IniReadSectionNames($IniFileName)
If @error Then
MsgBox(4096, "Ошибка!!!", "Не найден файл конфигураций.")
Else
For $i = 1 To $IniSections[0]
Local $KeyName = IniRead($IniFileName, $IniSections[$i], "KeyName", "Ошибка!!!")
Local $ValueName = IniRead($IniFileName, $IniSections[$i], "ValueName", "Ошибка!!!")
Local $Type = IniRead($IniFileName, $IniSections[$i], "Type", "Ошибка!!!")
Local $Value = IniRead($IniFileName, $IniSections[$i], "Value", "Ошибка!!!")
Local $StandartValue = IniRead($IniFileName, $IniSections[$i], "StandartValue", "Ошибка!!!")
If GUICtrlRead($ShowFiles) = 1 Then
RegWrite($KeyName, $ValueName, $Type, $Value)
Else
RegWrite($KeyName, $ValueName, $Type, $StandartValue)
EndIf
Next
EndIf
EndFunc
Вот ini файл откуда настройки считываются
Код:
[ShowFiles]
Name="Показывать скрытые файлы"
KeyName="HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
ValueName="hidden"
Type="REG_DWORD"
Value="00000001"
StandartValue="00000002"
[ShowSysFiles]
Name="Показывать скрытые системные файлы"
KeyName="HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
ValueName="ShowSuperHidden"
Type="REG_DWORD"
Value="00000001"
StandartValue="00000000"
[ShowExt]
Name="Показывать расширения"
KeyName="HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
ValueName="HideFileExt"
Type="REG_DWORD"
Value="00000000"
StandartValue="00000001"
Данная программа должна прочитать ini файл и создать кучу checkbox'ов. И потом, когда пользователь нажмет Применить, внести изменения в реестр в зависимости от того какие checkbox'ы отмечены.
Вопрос 1
Можно ли это всё как-то упростить?
Вопрос 2
Программа не правильно работает, работает только первый checkbox, зато работает как все сразу. В чём ошибка и как исправить?