Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 2)

Модерирует : gyra, Maz

Widok (01-06-2010 13:08): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

AZJIO



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
;  @AZJIO 19.04.2010
#NoTrayIcon ;скрыть в системной панели индикатор AutoIt
Global $Ini = @ScriptDir&'\timesoft.txt' ; путь к timesoft.txt
;Проверка существования timesoft.txt

$answer = ""
If Not FileExists($Ini) Then $answer = MsgBox(4, "Выгодное предложение", "Хотите создать необходимый timesoft.txt"&@CRLF&"для создания табличного списка программ?")
If $answer = "6" Then
$iniopen = FileOpen($Ini,1)
FileWrite($iniopen,  _
'Интернет|Игровой|Без инета|2' & @CRLF & _
'путь|время|состояние1|состояние2|состояние3|имя(необязательное) # сверху имена кнопок и стартовый профиль (эта строка справки не читается)' & @CRLF & _
'C:\Program Files\Serv-U\Start_Serv-U.bat|1|1|0|0|Serv-U' & @CRLF & _
'C:\Program FilesuTorrent\utorrent.exe|5|1|0|0|' & @CRLF & _
'C:\Program Files\AnVir Task Manager\AnVir.exe|7|1|0|1|' & @CRLF & _
'C:\Program Files\Arum Switcher\ArumSwitcher.exe|9|1|0|1|' & @CRLF & _
'C:\Program Files\clcl\clcl.exe|12|1|0|1|' & @CRLF & _
'C:\Program Files\Power Mixer\pwmixer.exe|13|1|1|1|Power Mixer' & @CRLF & _
'C:\Program Files\ruslat\ruslat.exe|14|1|1|1|' & @CRLF & _
'C:\Program Files\SuperCopier2\SuperCopier2.exe|15|1|0|1|' & @CRLF & _
'C:\Program Files\Tray Commander\TC.exe|16|1|0|1|' & @CRLF & _
'C:\Program Files\Arsenal Company\Сократ Персональный 4.1\spv.exe|18|1|0|1|Сократ' )
FileClose($iniopen)
EndIf
 
$timer = TimerInit() ; засекаем время
$file = FileOpen($Ini, 0)
$filetext = FileRead($file)
FileClose($file)
 
;кусок кода из UDF File.au3 для разделения образца построчно в массив
    If StringInStr($filetext, @LF) Then
        $aFiletext = StringSplit(StringStripCR($filetext), @LF)
    ElseIf StringInStr($filetext, @CR) Then ;; @LF does not exist so split on the @CR
        $aFiletext = StringSplit($filetext, @CR)
    Else ;; unable to split the file
        If StringLen($filetext) Then
            Dim
$aFiletext[2] = [1, $filetext]
        Else
            MsgBox(0, "Сообщение", "нет данных о программах в wim")
            Exit
        EndIf
    EndIf

$n=UBound($aFiletext) - 1
 
For $i = 3 to $n ; создаём переменные в цикле
$aSoft = StringSplit($aFiletext[$i], "|")
Assign('PTH' & $i, $aSoft[1])
 
Assign('TME' & $i, $aSoft[2])
    For $u = 1 to 3
        Assign('ch_'&$u&'_' & $i, $aSoft[$u+2])
    Next
If
$aSoft[6] = '' Then
Assign('NME' & $i, StringRegExpReplace ($aSoft[1], "(^.*)\\(.*)\.(.*)$", '\2'))
Else
Assign('NME' & $i, $aSoft[6])
EndIf
Assign('re' & $i, 0)
Next
 
;вычисляем максимальное значание для таймера
$d=0
For $i = 1 to $n
If $d<Int(Eval('TME'&$i)) Then $d=Int(Eval('TME'&$i))
Next
 
$aButton = StringSplit($aFiletext[1], "|")
 
GUICreate("Автостарт программ",270,$n*20+40) ; размер окна
$restart0 = GUICtrlCreateButton("R", 250, 2, 18, 18)
GUICtrlSetTip(-1, "Перезапуск скрипта.")
 
$start1=GUICtrlCreateButton ('^'&$aButton[1], 10,$n*20-30,62,20)
$start2=GUICtrlCreateButton ('^'&$aButton[2], 30,$n*20-10,62,20)
$start3=GUICtrlCreateButton ('^'&$aButton[3], 50,$n*20+10,62,20)
 
$timeLabel=GUICtrlCreateLabel ('',120, $n*20-25,147,30)
GUICtrlSetTip(-1, "Tаймер и профиль.")
GUICtrlSetColor(-1,0xEE0000)    ; Red
GUICtrlSetFont (-1,15)
$stopButton=GUICtrlCreateButton ('Стоп', 120,$n*20+5,62,25)
GUICtrlSetTip(-1, "Остановить/запустить таймер.")
$stoptimer=0
$symma=0
 
$checkall=GUICtrlCreateCheckbox ('', 10,$n*20+10,20,20)
GuiCtrlSetState(-1, 1)
GUICtrlSetTip(-1, "вкл/выкл все галочки")
 
; создание чекбоксов в GUI-оболочке
For $i = 3 To $n
    $pos
= $i * 20 - 50
    Assign('check_D' & $i, GUICtrlCreateButton (Eval('NME'&$i), 70, $pos, 120, 20))
    Assign('check_D1_' & $i, GUICtrlCreateCheckbox ('', 10, $pos, 15, 15))
    GuiCtrlSetState(Eval('check_D1_' & $i), Eval('ch_1_'&$i))
    Assign('check_D2_' & $i, GUICtrlCreateCheckbox ('', 30, $pos, 15, 15))
    GuiCtrlSetState(Eval('check_D2_' & $i), Eval('ch_2_'&$i))
    Assign('check_D3_' & $i, GUICtrlCreateCheckbox ('', 50, $pos, 15, 15))
    GuiCtrlSetState(Eval('check_D3_' & $i), Eval('ch_3_'&$i))
    Assign('time' & $i, GUICtrlCreateLabel (Eval('TME'&$i)&' сек', 200, $pos, 45, 15))
Next
 
GUISetState ()
 
    $x=0
While 1
    $msg = GUIGetMsg()
    Sleep(10)
    $z=Ceiling((TimerDiff($timer)+$symma)/1000)
        ;цикл автостарта, проверка всех условий
        For $i = 3 To $n
            If $stoptimer=0 And Eval('re'&$i) =0 And GUICtrlRead(Eval('check_D'&$aButton[4]&$i))=1 And Eval('TME'&$i)<$z Then
                If
FileExists(Eval('PTH'&$i)) Then
                    ShellExecute(Eval('PTH'&$i))
                    Sleep(300)
                    GuiCtrlSetState(Eval('re' & $i), 1)
                EndIf
                GuiCtrlSetState(Eval('check_D'&$aButton[4]&$i), 4)
            EndIf
        Next
        ;секундомер в оболочке
        If $stoptimer=0 and $z= $x+1 and $z<$d+1 Then
            If $z=$d Then
                GUICtrlSetData($timeLabel,'-'&$d&'- '&$aButton[$aButton[4]])
                $x=0
            Else
                GUICtrlSetData($timeLabel,$z&' '&$aButton[$aButton[4]])
                $x=$z
            EndIf
        EndIf
        ; проверка нажатий кнопок программ в оболочке
        For $i = 3 To $n
            If $msg = Eval('check_D'&$i) And FileExists(Eval('PTH'&$i)) Then
                ShellExecute(Eval('PTH'&$i))
                GuiCtrlSetState(Eval('re' & $i), 1)
                Sleep(300)
            EndIf
        Next
Select
    Case $msg = $stopButton ;остановка/запуск таймера
            If $stoptimer=0 Then
                $stoptimer=1
                GUICtrlSetData($stopButton,"Старт")
                $symma+=Ceiling(TimerDiff($timer))
            Else
                $stoptimer=0
                GUICtrlSetData($stopButton,"Стоп")
                $timer = TimerInit()
            EndIF
    Case $msg = $start1 ; три кнопки запуска профилей
        For $i = 3 To $n
            If GUICtrlRead(Eval('check_D1_'&$i))=1 And FileExists(Eval('PTH'&$i)) Then
                ShellExecute(Eval('PTH'&$i))
                GuiCtrlSetState(Eval('check_D1_' & $i), 4)
                GuiCtrlSetState(Eval('re' & $i), 1)
                Sleep(300)
            EndIf
        Next
    Case $msg = $start2
        For $i = 3 To $n
            If GUICtrlRead(Eval('check_D2_'&$i))=1 And FileExists(Eval('PTH'&$i)) Then
                ShellExecute(Eval('PTH'&$i))
                GuiCtrlSetState(Eval('check_D2_' & $i), 4)
                GuiCtrlSetState(Eval('re' & $i), 1)
                Sleep(300)
            EndIf
        Next
    Case $msg = $start3
        For $i = 3 To $n
            If GUICtrlRead(Eval('check_D3_'&$i))=1 And FileExists(Eval('PTH'&$i)) Then
                ShellExecute(Eval('PTH'&$i))
                GuiCtrlSetState(Eval('check_D3_' & $i), 4)
                GuiCtrlSetState(Eval('re' & $i), 1)
                Sleep(300)
            EndIf
        Next
            ; Снять / поставить галочки
    Case $msg = $checkall
            If GUICtrlRead($checkall)=1 Then
                $p=1
            Else
                $p=4
            EndIf
            For $i = 3 To $n
                For $u = 1 to 3
                    GuiCtrlSetState(Eval('check_D' &$u&'_'& $i), $p)
                Next
            Next
    Case $msg = $restart0
        _ScriptRestart()
    Case $msg = -3
        ExitLoop
EndSelect
WEnd
 
; функция перезапуска скрипта
Func _ScriptRestart()
    Local $sAutoIt_File = @TempDir & "\~Au3_ScriptRestart_TempFile.au3"
    Local $sRunLine, $sScript_Content, $hFile
 
    $sRunLine = @ScriptFullPath
    If Not @Compiled Then $sRunLine = @AutoItExe & ' /AutoIt3ExecuteScript ""' & $sRunLine & '""'
    If $CmdLine[0] > 0 Then $sRunLine &= ' ' & $CmdLineRaw
 
    $sScript_Content &= '#NoTrayIcon' & @CRLF & _
    'While ProcessExists(' & @AutoItPID & ')' & @CRLF & _
    '   Sleep(10)' & @CRLF & _
    'WEnd' & @CRLF & _
    'Run("' & $sRunLine & '")' & @CRLF & _
    'FileDelete(@ScriptFullPath)' & @CRLF
 
    $hFile = FileOpen($sAutoIt_File, 2)
    FileWrite($hFile, $sScript_Content)
    FileClose($hFile)
 
    Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $sAutoIt_File & '"', @ScriptDir, @SW_HIDE)
    Sleep(1000)
    Exit
EndFunc   ;==>_ScriptRestart

Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 14:16 19-04-2010
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 2)
Widok (01-06-2010 13:08): Лимит страниц. Продолжаем здесь.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru