Centrinar
25-05-2010, 15:03
Есть код:
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#requireadmin
#NoTrayIcon
Global $sProgs = 'Setup1.exe=Прог1|Seup2.exe=Прог2|Seup3.exe=Прог3|Seup4.exe=Прог4|Seup5.exe=Прог5'
Global $sProgs2 = 'Setup1.exe=Прог1|Seup2.exe=Прог2|Seup3.exe=Прог3|Seup4.exe=Прог4|Seup5.exe=Прог5'
Global Const $aProgs = StringSplit($sProgs, '|')
Global Const $aProgs2 = StringSplit($sProgs2, '|')
Global $anCheckBoxes[$aProgs[0]+1]
Global $aCheckedIcons[$aProgs[0]+1]
Global $aUnCheckedIcons[$aProgs[0]+1]
Global $aCompleteIcons[$aProgs[0]+1]
Global $aInstalledIcons[$aProgs[0]+1]
Global $anCheckBoxes2[$aProgs2[0]+1]
Global $aCheckedIcons2[$aProgs2[0]+1]
Global $aUnCheckedIcons2[$aProgs2[0]+1]
Global $aCompleteIcons2[$aProgs2[0]+1]
Global $aInstalledIcons2[$aProgs2[0]+1]
GUICreate("My GUI Tab",600,550)
GUISetBkColor(0xFFFFFF)
$nStart = GUICtrlCreateButton("Выполнить", 30, 510, 150, 30)
$tab=GUICtrlCreateTab (10,10, 580,480)
GUISetBkColor(0xFFFFFF)
$tab0=GUICtrlCreateTabitem ("tab0")
GUISetBkColor(0xFFFFFF)
$iTop = 35
$iLeft = 15
For $i = 1 To $aProgs[0]
$aCheckedIcons[$i] = "common\images\01.ico"
$aUnCheckedIcons[$i] = "common\images\01.ico"
$aInstalledIcons[$i] = "common\images\03.ico"
$aCompleteIcons[$i] = "common\images\02.ico"
$anCheckBoxes[$i] = _GUICtrlCreateCheckboxEx(StringRegExpReplace($aProgs[$i], '^.*=', ''), $iLeft, $iTop, -1, 15, $aUnCheckedIcons[$i])
$iTop += 20
If $iTop > 480 Then
$iTop = 10
$iLeft += 170
EndIf
Next
$tab1=GUICtrlCreateTabitem ("tab1")
GUISetBkColor(0xFFFFFF)
$iTop = 35
$iLeft = 15
For $s = 1 To $aProgs2[0]
$aCheckedIcons2[$s] = "common\images\01.ico"
$aUnCheckedIcons2[$s] = "common\images\01.ico"
$aInstalledIcons2[$s] = "common\images\03.ico"
$aCompleteIcons2[$s] = "common\images\02.ico"
$anCheckBoxes2[$s] = _GUICtrlCreateCheckboxEx(StringRegExpReplace($aProgs2[$s], '^.*=', ''), $iLeft, $iTop, -1, 15, $aUnCheckedIcons2[$s])
$iTop += 20
If $iTop > 480 Then
$iTop = 10
$iLeft += 170
EndIf
Next
GUICtrlCreateTabitem ("")
GUISetState ()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $nStart
For $i = 1 To $aProgs[0]
$aCheckBox = $anCheckBoxes[$i]
If GUICtrlRead($aCheckBox[1]) = 1 Then
$iChecked_Counter += 1
GUICtrlSetImage($aCheckBox[0], $aInstalledIcons[$i])
$sProgName = StringRegExpReplace($aProgs[$i], '^.*=', '')
$sProgExe = StringRegExpReplace($aProgs[$i], '=.*$', '')
MsgBox(64, $sProgName, "zz", 3)
GUICtrlSetImage($aCheckBox[0], $aCompleteIcons[$i])
Else
GUICtrlSetImage($aCheckBox[0], $aUnCheckedIcons[$i])
EndIf
Next
For $s = 1 To $aProgs2[0]
$aCheckBox2 = $anCheckBoxes2[$s]
If GUICtrlRead($aCheckBox2[1]) = 1 Then
$sChecked_Counter += 1
GUICtrlSetImage($aCheckBox2[0], $aInstalledIcons2[$s])
$sProgName2 = StringRegExpReplace($aProgs2[$s], '^.*=', '')
$sProgExe2 = StringRegExpReplace($aProgs2[$s], '=.*$', '')
RunWait(@ScriptDir & $sProgExe2)
GUICtrlSetImage($aCheckBox2[0], $aCompleteIcons2[$s])
Else
GUICtrlSetImage($aCheckBox2[0], $aUnCheckedIcons2[$s])
EndIf
Next
$iChecked_Counter = 0
$sChecked_Counter = 0
EndSwitch
WEnd
Func _GUICtrlCreateCheckboxEx($sText, $iLeft, $iTop, $iWidth, $iHeight, $sIconFile="", $nIconIndex=0)
Local $aRetArr[2]
$aRetArr[0] = GUICtrlCreateIcon($sIconFile, $nIconIndex, $iLeft + 17, $iTop, 16, 16)
GUICtrlSetState(-1, $GUI_DISABLE)
$aRetArr[1] = GUICtrlCreateCheckbox(" " & $sText & " ", $iLeft, $iTop, $iWidth, $iHeight)
GUICtrlSetBkColor($aRetArr[1], 0xFFFFFF)
Return $aRetArr
EndFunc
как сделать чтобы в Global $sProgs2 я писал значения реестра, например Global $sProgs2 = '("HKEY_LOCAL_MACHINE\SOFTWARE", "TestKey", "REG_SZ", "Hello this is a test")=Прог5' и скрипт вместо RunWait(@ScriptDir & $sProgExe) выполнял RegWrite... а в остальных случаях возвращал RunWait(@ScriptDir & $sProgExe)
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#requireadmin
#NoTrayIcon
Global $sProgs = 'Setup1.exe=Прог1|Seup2.exe=Прог2|Seup3.exe=Прог3|Seup4.exe=Прог4|Seup5.exe=Прог5'
Global $sProgs2 = 'Setup1.exe=Прог1|Seup2.exe=Прог2|Seup3.exe=Прог3|Seup4.exe=Прог4|Seup5.exe=Прог5'
Global Const $aProgs = StringSplit($sProgs, '|')
Global Const $aProgs2 = StringSplit($sProgs2, '|')
Global $anCheckBoxes[$aProgs[0]+1]
Global $aCheckedIcons[$aProgs[0]+1]
Global $aUnCheckedIcons[$aProgs[0]+1]
Global $aCompleteIcons[$aProgs[0]+1]
Global $aInstalledIcons[$aProgs[0]+1]
Global $anCheckBoxes2[$aProgs2[0]+1]
Global $aCheckedIcons2[$aProgs2[0]+1]
Global $aUnCheckedIcons2[$aProgs2[0]+1]
Global $aCompleteIcons2[$aProgs2[0]+1]
Global $aInstalledIcons2[$aProgs2[0]+1]
GUICreate("My GUI Tab",600,550)
GUISetBkColor(0xFFFFFF)
$nStart = GUICtrlCreateButton("Выполнить", 30, 510, 150, 30)
$tab=GUICtrlCreateTab (10,10, 580,480)
GUISetBkColor(0xFFFFFF)
$tab0=GUICtrlCreateTabitem ("tab0")
GUISetBkColor(0xFFFFFF)
$iTop = 35
$iLeft = 15
For $i = 1 To $aProgs[0]
$aCheckedIcons[$i] = "common\images\01.ico"
$aUnCheckedIcons[$i] = "common\images\01.ico"
$aInstalledIcons[$i] = "common\images\03.ico"
$aCompleteIcons[$i] = "common\images\02.ico"
$anCheckBoxes[$i] = _GUICtrlCreateCheckboxEx(StringRegExpReplace($aProgs[$i], '^.*=', ''), $iLeft, $iTop, -1, 15, $aUnCheckedIcons[$i])
$iTop += 20
If $iTop > 480 Then
$iTop = 10
$iLeft += 170
EndIf
Next
$tab1=GUICtrlCreateTabitem ("tab1")
GUISetBkColor(0xFFFFFF)
$iTop = 35
$iLeft = 15
For $s = 1 To $aProgs2[0]
$aCheckedIcons2[$s] = "common\images\01.ico"
$aUnCheckedIcons2[$s] = "common\images\01.ico"
$aInstalledIcons2[$s] = "common\images\03.ico"
$aCompleteIcons2[$s] = "common\images\02.ico"
$anCheckBoxes2[$s] = _GUICtrlCreateCheckboxEx(StringRegExpReplace($aProgs2[$s], '^.*=', ''), $iLeft, $iTop, -1, 15, $aUnCheckedIcons2[$s])
$iTop += 20
If $iTop > 480 Then
$iTop = 10
$iLeft += 170
EndIf
Next
GUICtrlCreateTabitem ("")
GUISetState ()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $nStart
For $i = 1 To $aProgs[0]
$aCheckBox = $anCheckBoxes[$i]
If GUICtrlRead($aCheckBox[1]) = 1 Then
$iChecked_Counter += 1
GUICtrlSetImage($aCheckBox[0], $aInstalledIcons[$i])
$sProgName = StringRegExpReplace($aProgs[$i], '^.*=', '')
$sProgExe = StringRegExpReplace($aProgs[$i], '=.*$', '')
MsgBox(64, $sProgName, "zz", 3)
GUICtrlSetImage($aCheckBox[0], $aCompleteIcons[$i])
Else
GUICtrlSetImage($aCheckBox[0], $aUnCheckedIcons[$i])
EndIf
Next
For $s = 1 To $aProgs2[0]
$aCheckBox2 = $anCheckBoxes2[$s]
If GUICtrlRead($aCheckBox2[1]) = 1 Then
$sChecked_Counter += 1
GUICtrlSetImage($aCheckBox2[0], $aInstalledIcons2[$s])
$sProgName2 = StringRegExpReplace($aProgs2[$s], '^.*=', '')
$sProgExe2 = StringRegExpReplace($aProgs2[$s], '=.*$', '')
RunWait(@ScriptDir & $sProgExe2)
GUICtrlSetImage($aCheckBox2[0], $aCompleteIcons2[$s])
Else
GUICtrlSetImage($aCheckBox2[0], $aUnCheckedIcons2[$s])
EndIf
Next
$iChecked_Counter = 0
$sChecked_Counter = 0
EndSwitch
WEnd
Func _GUICtrlCreateCheckboxEx($sText, $iLeft, $iTop, $iWidth, $iHeight, $sIconFile="", $nIconIndex=0)
Local $aRetArr[2]
$aRetArr[0] = GUICtrlCreateIcon($sIconFile, $nIconIndex, $iLeft + 17, $iTop, 16, 16)
GUICtrlSetState(-1, $GUI_DISABLE)
$aRetArr[1] = GUICtrlCreateCheckbox(" " & $sText & " ", $iLeft, $iTop, $iWidth, $iHeight)
GUICtrlSetBkColor($aRetArr[1], 0xFFFFFF)
Return $aRetArr
EndFunc
как сделать чтобы в Global $sProgs2 я писал значения реестра, например Global $sProgs2 = '("HKEY_LOCAL_MACHINE\SOFTWARE", "TestKey", "REG_SZ", "Hello this is a test")=Прог5' и скрипт вместо RunWait(@ScriptDir & $sProgExe) выполнял RegWrite... а в остальных случаях возвращал RunWait(@ScriptDir & $sProgExe)