Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Помогите разобраться

Ответить
Настройки темы
[решено] Помогите разобраться

Аватара для Centrinar

Старожил


Сообщения: 247
Благодарности: 1

Профиль | Цитировать


Есть код:
Код: Выделить весь код
#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)

Отправлено: 15:03, 25-05-2010

 

Аватара для ven00m

Пользователь


Сообщения: 76
Благодарности: 12

Профиль | Отправить PM | Цитировать


А зачем все мешать в одну кучу, файлы и ключи реестра? Используй тогда уж reg файлы.
Как то так:
Код: Выделить весь код
Global $sProgs2 = '%SystemRoot%\regedit.exe /s prog5.reg=Прог5'
Тем более что один чекбокс на ключ слишком жирно, не?
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:40, 25-05-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


последние две твои темы конечно атас. Модератор(ы) проявляют невиданную выдержку и терпение к твоей персоне.
ну ду ладно, бог с ним - с темой. но ты неправильно задаешь вопрос, заставляя тех, кто (возможно) хочет тебе помочь выуживать у тебя информацию. к примеру
Цитата Centrinar:
а в остальных случаях возвращал »
что за остальные случаи? и что за неостальные? ты же должен понимать, что скрипт выполняет различные вещи при различных условиях посредством операторов условия. какие условия поставил ты? я вот в упор не вижу. как отделить не то что машине (интерпретатору) а человеку один случай от другого/других? все что я смог разобрать -
Цитата Centrinar:
я писал значения реестра »
по всей видимости это должно было послужить условием. но как понимать в контексте выполнения скрипта твое "писал". как ты планируешь писать? перед выполнением? вобщем, как условие для оператора условий - оно не катит. ставь задачу и условия четче. во вторых,
Цитата Centrinar:
Код: Выделить весь код
RunWait(@ScriptDir & $sProgExe)
»
не содержит в себе объединяющий слеш. это к вопросу о синтаксисе. справка потерялась что ли?
в остальном, если справишься с своей невнимательностью и приучишь себя нормально ставить задачи, в первую очередь самому себе, то твой ответ сведется до примитива
Код: Выделить весь код
if какое_то_условие then
   RegWrite(нужный_ключ_реестра)
else
   RunWait(путь_до_программы)
endif

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 15:46, 25-05-2010 | #3


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата kaster:
Модератор(ы) проявляют невиданную выдержку и терпение к твоей персоне »
Да просто у модератора не всегда есть время каждый день по несколько раз заглядывать сюда...

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

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

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:17, 25-05-2010 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Помогите разобраться

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Помогите разобраться Felixcat Видеокарты 1 27-09-2009 13:15
C/C++ - Помогите разобраться morgan1991 Программирование и базы данных 3 04-11-2008 17:16
FreeBSD - Помогите разобраться. Myrzilka Общий по FreeBSD 0 15-01-2008 23:51
Помогите разобраться blackrokk Автоматическая установка Windows 2000/XP/2003 2 09-08-2006 09:13
Помогите разобраться..... Dimskiy Microsoft Windows 2000/XP 4 26-06-2006 18:50




 
Переход