AlexNewman
Новичок
- Сообщения
- 15
- Репутация
- 0
Прошу прощения, хочу вынести вопрос в отдельный топик, поиск не решил мой вопрос.
Помогите реализовать расстановку CHECKBOX'ов в зависимости от значений в реестре.
То есть есть ряд галок, по кнопке "проверить" скрипт смотрит в реестр, в нужный раздел, в конкретный параметр (за каждой галкой разные), и в зависимости от значений, расставляет галки, тем самым указывая что эта "настройка" включена, и снимает галку, если нужного ключа не находит.
Спасибо за внимание, и безмерная благодарность за помощь )
Помогите реализовать расстановку CHECKBOX'ов в зависимости от значений в реестре.
То есть есть ряд галок, по кнопке "проверить" скрипт смотрит в реестр, в нужный раздел, в конкретный параметр (за каждой галкой разные), и в зависимости от значений, расставляет галки, тем самым указывая что эта "настройка" включена, и снимает галку, если нужного ключа не находит.
Код:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>
#include <TabConstants.au3>
#include <array.au3>
;описание переменных
;===================================================================================================
Local $tab0, $tab1, $tab2, $tab3, $tab4, $tab5 ;Переменные - вкладки
Local $tab0input, $tab1input
;===================================================================================================
GUICreate("GRDN-LOCK", 740, 480) ;заголовок окна
GUISetState ()
;===================================================================================================
;создание поля с вкладками
$tab0 = GUICtrlCreateTab(10, 10, 520, 400, $TCS_TABS + $TCS_RIGHTJUSTIFY + $TCS_MULTILINE, $WS_EX_CLIENTEDGE) ;, $WS_VSCROLL) ;создание поля с вкладками
;ВКЛАДКА 5 (DEMO) ==========================================================================================================================
$tab5 = GUICtrlCreateTabItem("Демонстрация")
Dim $CheckBox[3]
$CheckBox[0] = GUICtrlCreateCheckbox('Добавить пункт меню "!_пункт1"', 20, 50, 400, 20)
$CheckBox[1] = GUICtrlCreateCheckbox('Добавить пункт меню "!!__пункт2"', 20, 70, 400, 20)
$CheckBox[2] = GUICtrlCreateCheckbox('Добавить пункт меню "!!!___пункт3"', 20, 90, 400, 20)
GUICtrlCreateTabItem("") ; определяет конец вкладок
;Кнопка ПРИМЕНИТЬ ====================================================================================
Local $CTRL_btn3 = GUICtrlCreateButton("Применить", 570, 100, 80, 29)
Local $CTRL_btn4 = GUICtrlCreateButton("Проверить", 570, 150, 80, 29)
GUISetState() ;Показывает сосзданное окно
;=============================================================================================================================================================================
;тестовые ключи реестра (добавляют пункты контекстного меню рабочего стола)
Dim $CheckBoxItem[3]
$CheckBoxItem[0] = 'HKEY_CURRENT_USER\Software\Test,TestKey1,REG_DWORD,1' ;
$CheckBoxItem[1] = 'HKEY_CLASSES_ROOT\DesktopBackground\Shell\!!__Пункт2,TestKey2,REG_DWORD,1' ;'HKEY_CURRENT_USER\Software\Test,TestKey2,REG_SZ,Значение2'
$CheckBoxItem[2] = 'HKEY_CLASSES_ROOT\DesktopBackground\Shell\!!!__Пункт3,TestKey3,REG_DWORD,1' ;'HKEY_CURRENT_USER\Software\Test,TestKey3,REG_SZ,Значение3'
Global $aPath, $key
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $CTRL_btn4
For $i = 0 To Ubound($CheckboxItem) - 1
$part = StringSplit($CheckBoxItem[$i], ',')
$sPath = RegRead($part[1],$part[2])
$sString = $sPath
;~ For $i = 0 To Ubound($CheckBox) - 1
If $sString = 1 Then GUICtrlSetState ($CheckBox, $GUI_CHECKED)
ConsoleWrite($sString)
MsgBox(64, "Port", " Значение: " & $sString)
; If $sString = 0 Then GUICtrlSetState ($CheckBox[i], $GUI_UNCHECKED) ;!!!!!!
ConsoleWrite('!_ВЫКЛ_!') ;!!!!!!
;MsgBox(64, "Port", " !!!Значение: " & $sString)
Next
Case $CTRL_btn3
ConsoleWrite('---------------------------------' & @CR)
For $i = 0 To UBound($CheckBox) - 1
If GUICtrlRead($CheckBox[$i]) = $GUI_CHECKED Then
$part = StringSplit($CheckBoxItem[$i], ',')
RegWrite($part[1], $part[2], $part[3], $part[4])
ConsoleWrite ('чекбокс ВКЛ_')
If Not @error Then
ConsoleWrite(GUICtrlRead($CheckBox[$i]) & ' установлено' & @CR)
Else
ConsoleWrite('Ошибка записи ' & @error & ' в ' & GUICtrlRead($CheckBox[$i]) & @CR)
EndIf
Else
$part = StringSplit($CheckBoxItem[$i], ',')
RegDelete($part[1], $part[2]) ;ФУНКЦИЯ РАБОТАЕТ, УДАЛЯЕТ ТОЛЬКО КЛЮЧИ РЕЕСТРА, НО НЕ РАЗДЕЛЫ
If Not @error Then
ConsoleWrite ('Значение удалено_')
EndIf
EndIf
Next
EndSwitch
WEnd
Спасибо за внимание, и безмерная благодарность за помощь )