#include <GUIConstantsEx.au3>
$hGUI = GUICreate("Regedit", 200, 250) ;Создаем формк
;Читаем из реестра
$sRead = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt", "InstallDir") ;Читаем
$Input1 = GUICtrlCreateInput($sRead,10,10,180,20) ;Создаем инпут
;Записываем в реестр
GuictrlCreateLabel("Записать в реестр:",10,70)
$Input2 = GUICtrlCreateInput("Какое то значение",10,100,180,20) ;Создаем еще один инпут но для записи
$CheckBox1 = GUICtrlCreateCheckbox("Чекбокс",10,140);Создаем чекбокс
$Button1 = GuiCtrlCreatebutton("Записать", 10, 170,180,20);Создаем кнопку для обработки событий
GUISetState()
While 1 ;Создаем цикл для обработки событий формы
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE ;Если нажали ктестик то...
Exit ;... выход
Case $Button1 ;Если нажали на кнопку то ...
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Test", "TestKey", "REG_SZ", GuiCtrlRead($Input2)) ;... Записываем значение из инпута
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Test", "TestKey2", "REG_SZ", Number(GUICtrlRead($CheckBox1) = $GUI_CHECKED));... и записываем стейт чекбокса в виде 0 или 1
EndSwitch
WEnd ;Конец цикла
всё работает, но не так как мне надо, у меня 4 ChekBox'a, Input и 2 Radio и надо что бы всё это в реестр записывалось при нажатии Button, и притом что ChekBox записывает определенное значение, у всех 4-х они разные, а скрипт выполняется на 1\3, то есть я выставляю Radio u Input, он записывает только Input, т.к он стоит раньше чем InputMedic84 сказал(а):Код:#include <GUIConstantsEx.au3> $hGUI = GUICreate("Regedit", 200, 250) ;Создаем формк ;Читаем из реестра $sRead = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt", "InstallDir") ;Читаем $Input1 = GUICtrlCreateInput($sRead,10,10,180,20) ;Создаем инпут ;Записываем в реестр GuictrlCreateLabel("Записать в реестр:",10,70) $Input2 = GUICtrlCreateInput("Какое то значение",10,100,180,20) ;Создаем еще один инпут но для записи $CheckBox1 = GUICtrlCreateCheckbox("Чекбокс",10,140);Создаем чекбокс $Button1 = GuiCtrlCreatebutton("Записать", 10, 170,180,20);Создаем кнопку для обработки событий GUISetState() While 1 ;Создаем цикл для обработки событий формы $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE ;Если нажали ктестик то... Exit ;... выход Case $Button1 ;Если нажали на кнопку то ... RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Test", "TestKey", "REG_SZ", GuiCtrlRead($Input2)) ;... Записываем значение из инпута RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Test", "TestKey2", "REG_SZ", Number(GUICtrlRead($CheckBox1) = $GUI_CHECKED));... и записываем стейт чекбокса в виде 0 или 1 EndSwitch WEnd ;Конец цикла
Можно вот так
while 1
$s00 = 0x00000000
$s01 = 0x00000001
$s02 = 0x00000002
$s03 = 0x00000003
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $ButtonReg
Select
Case GUICtrlRead($swritename); = $GUI_CHECKED
RegWrite("HKEY_CURRENT_USER\...", "...", "REG_SZ", GUICtrlRead($swritename))
;Exitloop
Case GUICtrlRead($Radio0) = $GUI_CHECKED
RegWrite("HKEY_CURRENT_USER\...", "...", "REG_DWORD", $s00)
;Exitloop
Case GUICtrlRead($Radio1) = $GUI_CHECKED
RegWrite("HKEY_CURRENT_USER\...", "...", "REG_DWORD", $s01)
;Exitloop
Case GUICtrlRead($Radio2) = $GUI_CHECKED
RegWrite("HKEY_CURRENT_USER\...", "...", "REG_DWORD", $s02)
;Exitloop
Case GUICtrlRead($Radio3) = $GUI_CHECKED
RegWrite("HKEY_CURRENT_USER\...", "...", "REG_DWORD", $s03)
;Exitloop
Case GUICtrlRead($music) = $GUI_CHECKED
RegWrite("HKEY_CURRENT_USER\...", "...", "REG_DWORD", "0 или 1")
;Exitloop
Case GUICtrlRead($sound) = $GUI_CHECKED
RegWrite("HKEY_CURRENT_USER\...", "...", "REG_DWORD", "0 или 1")
Exitloop
EndSelect
EndSwitch
WEnd
#Include <GUIConstantsEx.au3>
Global Const $REG_KEY_NAME = 'HKCU\SOFTWARE\MyProgram'
$cParam1 = 1 ; Checkbox1
$cParam2 = 0 ; Checkbox2
$cParam3 = 0 ; Checkbox3
$cParam4 = 1 ; Checkbox4
$cParam5 = 0 ; 0 - Radio1; 1 - Radio2; 2 - Radio3; etc
$cParam6 = 'Simple Text' ; Input
_ReadRegistry()
GUICreate('MyGUI', 400, 400)
$Checkbox1 = GUICtrlCreateCheckbox('Checkbox 1', 10, 10, 100, 20)
GUICtrlSetState(-1, BitOR($GUI_CHECKED * $cParam1, $GUI_UNCHECKED * (Not $cParam1)))
$Checkbox2 = GUICtrlCreateCheckbox('Checkbox 2', 10, 32, 100, 20)
GUICtrlSetState(-1, BitOR($GUI_CHECKED * $cParam2, $GUI_UNCHECKED * (Not $cParam2)))
$Checkbox3 = GUICtrlCreateCheckbox('Checkbox 3', 10, 54, 100, 20)
GUICtrlSetState(-1, BitOR($GUI_CHECKED * $cParam3, $GUI_UNCHECKED * (Not $cParam3)))
$Checkbox4 = GUICtrlCreateCheckbox('Checkbox 4', 10, 76, 100, 20)
GUICtrlSetState(-1, BitOR($GUI_CHECKED * $cParam4, $GUI_UNCHECKED * (Not $cParam4)))
GUIStartGroup()
$Radio1 = GUICtrlCreateRadio('Radio 1', 150, 10, 100, 20)
GUICtrlSetState(-1, BitOR($GUI_CHECKED * ($cParam5 = 0), $GUI_UNCHECKED * ($cParam5 <> 0)))
$Radio2 = GUICtrlCreateRadio('Radio 2', 150, 32, 100, 20)
GUICtrlSetState(-1, BitOR($GUI_CHECKED * ($cParam5 = 1), $GUI_UNCHECKED * ($cParam5 <> 1)))
$Radio3 = GUICtrlCreateRadio('Radio 3', 150, 54, 100, 20)
GUICtrlSetState(-1, BitOR($GUI_CHECKED * ($cParam5 = 2), $GUI_UNCHECKED * ($cParam5 <> 2)))
$ButtonSave = GUICtrlCreateButton('Save && Exit', 155, 368, 90, 23)
GUiSetState()
$Input = GUICtrlCreateInput($cParam6, 10, 110, 240, 20)
While 1
$Msg = GUIGetMsg()
Switch $Msg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $ButtonSave
$cParam1 = (GUICtrlRead($Checkbox1) = $GUI_CHECKED)
$cParam2 = (GUICtrlRead($Checkbox2) = $GUI_CHECKED)
$cParam3 = (GUICtrlRead($Checkbox3) = $GUI_CHECKED)
$cParam4 = (GUICtrlRead($Checkbox4) = $GUI_CHECKED)
$cParam5 = BitOR((GUICtrlRead($Radio2) = $GUI_CHECKED) * 1, (GUICtrlRead($Radio3) = $GUI_CHECKED) * 2)
$cParam6 = GUICtrlRead($Input)
_WriteRegistry()
ExitLoop
EndSwitch
WEnd
Func _ReadRegistry()
$cParam1 = _ValueCheck(_RegRead($REG_KEY_NAME, 'Param1', 'REG_DWORD', $cParam1), 0, 1)
$cParam2 = _ValueCheck(_RegRead($REG_KEY_NAME, 'Param2', 'REG_DWORD', $cParam2), 0, 1)
$cParam3 = _ValueCheck(_RegRead($REG_KEY_NAME, 'Param3', 'REG_DWORD', $cParam3), 0, 1)
$cParam4 = _ValueCheck(_RegRead($REG_KEY_NAME, 'Param4', 'REG_DWORD', $cParam4), 0, 1)
$cParam5 = _ValueCheck(_RegRead($REG_KEY_NAME, 'Param5', 'REG_DWORD', $cParam5), 0, 2)
$cParam6 = _RegRead($REG_KEY_NAME, 'Param6', 'REG_SZ', $cParam6)
EndFunc ;==>_ReadRegistry
Func _RegRead($Key, $Value, $Type, $Default)
Local $Val = RegRead($Key, $Value)
If @error Then
RegWrite($Key, $Value, $Type, $Default)
Return $Default
EndIf
Switch StringUpper($Type)
Case 'REG_SZ', 'REG_MULTI_SZ', 'REG_EXPAND_SZ'
If Not IsString($Val) Then
Return SetError(1, 0, $Default)
EndIf
Case 'REG_BINARY'
If Not IsBinary($Val) Then
Return SetError(1, 0, $Default)
EndIf
Case 'REG_DWORD'
If Not IsInt($Val) Then
Return SetError(1, 0, $Default)
EndIf
Case Else
Return SetError(1, 0, $Default)
EndSwitch
Return $Val
EndFunc ;==>_RegRead
Func _ValueCheck($iValue, $iMin, $iMax)
If $iValue < $iMin Then
Return $iMin
EndIf
If $iValue > $iMax Then
Return $iMax
EndIf
Return $iValue
EndFunc ;==>_ValueCheck
Func _WriteRegistry()
RegWrite($REG_KEY_NAME, 'Param1', 'REG_DWORD', $cParam1)
RegWrite($REG_KEY_NAME, 'Param2', 'REG_DWORD', $cParam2)
RegWrite($REG_KEY_NAME, 'Param3', 'REG_DWORD', $cParam3)
RegWrite($REG_KEY_NAME, 'Param4', 'REG_DWORD', $cParam4)
RegWrite($REG_KEY_NAME, 'Param5', 'REG_DWORD', $cParam5)
RegWrite($REG_KEY_NAME, 'Param6', 'REG_SZ', $cParam6)
EndFunc ;==>_WriteRegistry
oneDmitry сказал(а):...а как сделать что бы чек ChekBox u Radio загружались с реестра ?
oneDmitry сказал(а):ну я по другому решил вопрос...
While 1 ;Создаем цикл для обработки событий формы
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE ;Если нажали ктестик то...
Exit ;... выход
Case $BName ;Если нажали на кнопку то ...
RegWrite("HKEY_CURRENT_USER\", "...", "REG_SZ", GuiCtrlRead($sWriteN)) ;... Записываем значение из инпута
RegWrite("HKEY_CURRENT_USER\...", "...", "REG_DWORD", Number(GUICtrlRead($M) = $GUI_CHECKED));... и записываем стейт чекбокса в виде 0 или 1
RegWrite("HKEY_CURRENT_USER\", "...", "REG_DWORD", Number(GUICtrlRead($S) = $GUI_CHECKED));... и записываем стейт чекбокса в виде 0 или 1
RegWrite("HKEY_CURRENT_USER\", "...", "REG_DWORD", Number(GUICtrlRead($W) = $GUI_CHECKED));... и записываем стейт чекбокса в виде 0 или 1
EndSwitch
WEnd
...
$iReadR = RegRead("HKEY_CURRENT_USER\Software\", "name")
If $iReadR = 0 Then ; -- если значение параметра в реестре равно 0 то устанавливаем в Combo 1...
$sX = "1"
;MsgBox(0,"Тест", $sX)
Else
If $iReadR = 1 Then
$sX = "2"
;MsgBox(0,"Тест", $sX)
Else
If $iReadR = 2 Then
$sX = "3"
;MsgBox(0,"Тест", $sX)
Else
If $iReadR = 3 Then
$sX = "4"
;MsgBox(0,"Тест", $sX)
EndIf
EndIf
EndIf
EndIf
$Combo3 = GUICtrlCreateCombo("", 16, 232, 109, 25)
GUICtrlSetData($Combo3, "7|8|9|10",$sX)
...
While 1
$msg = GUIGetMsg()
If GUICtrlRead($Combo3) = "1" then
RegWrite("HKEY_CURRENT_USER\Software\", "name", "REG_DWORD","значХ")
Else
If GUICtrlRead($Combo3) = "2" then
RegWrite("HKEY_CURRENT_USER\Software\", "name", "REG_DWORD","значХ")
Else
If GUICtrlRead($Combo3) = "3" then
RegWrite("HKEY_CURRENT_USER\Software\", "name", "REG_DWORD","значХ")
Else
If GUICtrlRead($Combo3) = "4" then
RegWrite("HKEY_CURRENT_USER\Software\", "name", "REG_DWORD","значХ")
EndIf
EndIf
EndIf
EndIf
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
ExitLoop
EndSwitch
WEnd