Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Помогите разобраться (http://forum.oszone.net/showthread.php?t=176540)

Centrinar 25-05-2010 15:03 1420785

Помогите разобраться
 
Есть код:
Код:

#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)

ven00m 25-05-2010 15:40 1420815

А зачем все мешать в одну кучу, файлы и ключи реестра? Используй тогда уж reg файлы.
Как то так:
Код:

Global $sProgs2 = '%SystemRoot%\regedit.exe /s prog5.reg=Прог5'
Тем более что один чекбокс на ключ слишком жирно, не?

kaster 25-05-2010 15:46 1420822

последние две твои темы конечно атас. Модератор(ы) проявляют невиданную выдержку и терпение к твоей персоне.
ну ду ладно, бог с ним - с темой. но ты неправильно задаешь вопрос, заставляя тех, кто (возможно) хочет тебе помочь выуживать у тебя информацию. к примеру
Цитата:

Цитата Centrinar
а в остальных случаях возвращал »

что за остальные случаи? и что за неостальные? ты же должен понимать, что скрипт выполняет различные вещи при различных условиях посредством операторов условия. какие условия поставил ты? я вот в упор не вижу. как отделить не то что машине (интерпретатору) а человеку один случай от другого/других? все что я смог разобрать -
Цитата:

Цитата Centrinar
я писал значения реестра »

по всей видимости это должно было послужить условием. но как понимать в контексте выполнения скрипта твое "писал". как ты планируешь писать? перед выполнением? вобщем, как условие для оператора условий - оно не катит. ставь задачу и условия четче. во вторых,
Цитата:

Цитата Centrinar
Код:

RunWait(@ScriptDir & $sProgExe)
»

не содержит в себе объединяющий слеш. это к вопросу о синтаксисе. справка потерялась что ли?
в остальном, если справишься с своей невнимательностью и приучишь себя нормально ставить задачи, в первую очередь самому себе, то твой ответ сведется до примитива
Код:

if какое_то_условие then
  RegWrite(нужный_ключ_реестра)
else
  RunWait(путь_до_программы)
endif


Creat0R 25-05-2010 18:17 1420927

Цитата:

Цитата kaster
Модератор(ы) проявляют невиданную выдержку и терпение к твоей персоне »

Да просто у модератора не всегда есть время каждый день по несколько раз заглядывать сюда...

Centrinar,
неудачное название темы, переименуй во что нибудь вменяемое, не смотря на то что тема решена (как?).

Цитата:

Цитата Centrinar
как сделать чтобы в Global $sProgs2 я писал значения реестра »

Код:

Global $sProgs2 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE", "TestKey", "REG_SZ", "Hello this is a test") & '=Прог5'
Но если там будет больше чем одна запись, то лучше это делать в цикле.


Время: 23:33.

Время: 23:33.
© OSzone.net 2001-