Что нового

[Элементы GUI] создание скрипта с запуском через него программ и выводом сообщений о выполнении

Fortress12

Новичок
Сообщения
9
Репутация
0
Добрый вечер.
Нашел на форуме вот этот скрипт
Код:
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>

$hGUI = GUICreate('Example', 200, 150)
$nProgress = GUICtrlCreateProgress(10, 100, 180, 20, $PBS_MARQUEE)
GUICtrlSetState(-1, $GUI_HIDE)
$nLbl = GUICtrlCreateLabel('', 10, 80, 180, 20, BitOR($GUI_SS_DEFAULT_LABEL, $SS_CENTER, $SS_CENTERIMAGE))
$nBtn = GUICtrlCreateButton('Click me', 50, 120, 100, 30)
GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            ExitLoop
        Case $nBtn
            GUICtrlSetState($nBtn, $GUI_DISABLE)
            GUICtrlSetData($nLbl, 'Ждите...' & @TAB & '0.00 сек')
            GUICtrlSetState($nProgress, $GUI_SHOW)
            GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 1, 50)
            $iTimer = TimerInit()
            $iEnd = Random(10000, 30000, 1)
;~          $iPid = Run('какая-то программа')
;~          While ProcessExists($iPid)
            While TimerDiff($iTimer) < $iEnd
                Sleep(500)
                GUICtrlSetData($nLbl, 'Ждите...' & @TAB & StringFormat('%.2f сек', TimerDiff($iTimer) / 1000))
            WEnd
            GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 0, 0)
            GUICtrlSetState($nProgress, $GUI_HIDE)
            GUICtrlSetData($nLbl, '')
            GUICtrlSetState($nBtn, $GUI_ENABLE)
    EndSwitch
WEnd


Подскажите плиз как его доделать немножко так чтобы в окне над прогрессбаром и надписью ждите в три строки выходило что то типо "выполняю 1" "выполняю 2" "выполняю 3" но не сразу а по мере запуска каждой программы, то есть запустилась прога1 и вылезло окно "выполняю 1" и так далее до 3х)))
Заранее огромное спасибо за потраченное время
 

InnI

AutoIT Гуру
Сообщения
4,561
Репутация
1,261
Fortress12
Код:
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>

$hGUI = GUICreate('Example', 200, 150)
$nProgress = GUICtrlCreateProgress(10, 100, 180, 20, $PBS_MARQUEE)
GUICtrlSetState(-1, $GUI_HIDE)
$nLog = GUICtrlCreateLabel('', 10, 10, 180, 20, BitOR($GUI_SS_DEFAULT_LABEL, $SS_CENTER, $SS_CENTERIMAGE))
$nLbl = GUICtrlCreateLabel('', 10, 80, 180, 20, BitOR($GUI_SS_DEFAULT_LABEL, $SS_CENTER, $SS_CENTERIMAGE))
$nBtn = GUICtrlCreateButton('Click me', 50, 120, 100, 30)
GUISetState()

While 1
  Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
      ExitLoop
    Case $nBtn
      GUICtrlSetState($nBtn, $GUI_DISABLE)
      GUICtrlSetData($nLbl, 'Ждите...' & @TAB & '0.00 сек')
      GUICtrlSetState($nProgress, $GUI_SHOW)
      GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 1, 50)
      ProgRun('calc.exe', 'Калькулятор')
      ProgRun('notepad.exe', 'Блокнот')
      ProgRun('mspaint.exe', 'Paint')
      ProgRun('cmd.exe', 'Консоль')
      GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 0, 0)
      GUICtrlSetState($nProgress, $GUI_HIDE)
      GUICtrlSetData($nLbl, '')
      GUICtrlSetState($nBtn, $GUI_ENABLE)
  EndSwitch
WEnd

Func ProgRun($FileName, $ProgName)
  Local $iTimer = TimerInit()
  Local $iPid = Run($FileName)
  GUICtrlSetData($nLog, 'Выполняю: ' & $ProgName)
  While ProcessExists($iPid)
    Sleep(500)
    GUICtrlSetData($nLbl, 'Ждите...' & @TAB & StringFormat('%.2f сек', TimerDiff($iTimer) / 1000))
  WEnd
  GUICtrlSetData($nLog, '')
EndFunc
 
Автор
F

Fortress12

Новичок
Сообщения
9
Репутация
0
А возможно ли сделать чтобы прогресс выполнения программ был записан не в одну строку и заменял одну прогу на другую а типо того
-делаю раз
-делаю два
-делаю три
 

InnI

AutoIT Гуру
Сообщения
4,561
Репутация
1,261
Fortress12 [?]
не в одну строку
Код:
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <EditConstants.au3>

$hGUI = GUICreate('Example', 200, 150)
$nProgress = GUICtrlCreateProgress(10, 100, 180, 20, $PBS_MARQUEE)
GUICtrlSetState(-1, $GUI_HIDE)
$nLog = GUICtrlCreateEdit('', 10, 10, 180, 60, BitOR($ES_AUTOVSCROLL, $ES_READONLY))
$nLbl = GUICtrlCreateLabel('', 10, 80, 180, 20, BitOR($GUI_SS_DEFAULT_LABEL, $SS_CENTER, $SS_CENTERIMAGE))
$nBtn = GUICtrlCreateButton('Click me', 50, 120, 100, 30)
GUISetState()

While 1
  Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
      ExitLoop
    Case $nBtn
      GUICtrlSetData($nLog, '')
      GUICtrlSetState($nBtn, $GUI_DISABLE)
      GUICtrlSetData($nLbl, 'Ждите...' & @TAB & '0.00 сек')
      GUICtrlSetState($nProgress, $GUI_SHOW)
      GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 1, 50)
      ProgRun('calc.exe', 'Калькулятор')
      ProgRun('notepad.exe', 'Блокнот')
      ProgRun('mspaint.exe', 'Paint')
      ProgRun('cmd.exe', 'Консоль')
      ProgRun('notepad.exe', 'Блокнот')
      ProgRun('calc.exe', 'Калькулятор')
      ProgRun('mspaint.exe', 'Paint')
      GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 0, 0)
      GUICtrlSetState($nProgress, $GUI_HIDE)
      GUICtrlSetData($nLbl, '')
      GUICtrlSetState($nBtn, $GUI_ENABLE)
  EndSwitch
WEnd

Func ProgRun($FileName, $ProgName)
  Local $iTimer = TimerInit()
  Local $iPid = Run($FileName)
  If GUICtrlRead($nLog) Then GUICtrlSetData($nLog, @CRLF, 1)
  GUICtrlSetData($nLog, 'Выполняю: ' & $ProgName, 1)
  While ProcessExists($iPid)
    Sleep(500)
    GUICtrlSetData($nLbl, 'Ждите...' & @TAB & StringFormat('%.2f сек', TimerDiff($iTimer) / 1000))
  WEnd
EndFunc
 
Автор
F

Fortress12

Новичок
Сообщения
9
Репутация
0
Код:
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <EditConstants.au3>

$hGUI = GUICreate('Example', 300, 190)
$nProgress = GUICtrlCreateProgress(60, 100, 180, 20, $PBS_MARQUEE)
GUICtrlSetState(-1, $GUI_HIDE)
$nLog = GUICtrlCreateEdit('', 10, 10, 280, 60, BitOR($ES_AUTOVSCROLL, $ES_READONLY))
$nLbl = GUICtrlCreateLabel('', 10, 80, 280, 20, BitOR($GUI_SS_DEFAULT_LABEL, $SS_CENTER, $SS_CENTERIMAGE))
$nBtn = GUICtrlCreateButton('Windows 7', 75, 130, 150, 30)
$nBtn = GUICtrlCreateButton('Windows 8+', 75, 160, 150, 30)
GUISetState()


While 1
  Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
      ExitLoop
    Case $nBtn
      GUICtrlSetData($nLog, '')
      GUICtrlSetState($nBtn, $GUI_DISABLE)
      GUICtrlSetData($nLbl, 'Ждите...' & @TAB & '0.00 сек')
      GUICtrlSetState($nProgress, $GUI_SHOW)
      GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 1, 75)
      ProgRun('calc.exe', 'Калькулятор')
      ProgRun('notepad.exe', 'Блокнот')
      ProgRun('mspaint.exe', 'Paint')
      GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 0, 0)
      GUICtrlSetState($nProgress, $GUI_HIDE)
      GUICtrlSetData($nLbl, '')
      GUICtrlSetState($nBtn, $GUI_ENABLE)
  EndSwitch
WEnd

Func ProgRun($FileName, $ProgName)
  Local $iTimer = TimerInit()
  Local $iPid = Run($FileName)
  If GUICtrlRead($nLog) Then GUICtrlSetData($nLog, @CRLF, 1)
  GUICtrlSetData($nLog, 'Выполняю: ' & $ProgName, 1)
  While ProcessExists($iPid)
    Sleep(500)
    GUICtrlSetData($nLbl, 'Ждите...' & @TAB & StringFormat('%.2f сек', TimerDiff($iTimer) / 1000))
  WEnd
EndFunc


И пара последних вопросов.
Я добавил еще кнопку и обозвал их Windows 7 и Windows 8+
Как сделать чтобы при нажатии на какую то из них выполнялись три команды? Вобщем чтобы обе запускали что то...
И последний вопрос - какую строчку дописать чтоб при компиляции скрипт иконку подхватил?
 

Spyhunter

Знающий
Сообщения
56
Репутация
13
Код:
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <EditConstants.au3>

$hGUI = GUICreate('Example', 300, 190)
$nProgress = GUICtrlCreateProgress(60, 100, 180, 20, $PBS_MARQUEE)
GUICtrlSetState(-1, $GUI_HIDE)
$nLog = GUICtrlCreateEdit('', 10, 10, 280, 60, BitOR($ES_AUTOVSCROLL, $ES_READONLY))
$nLbl = GUICtrlCreateLabel('', 10, 80, 280, 20, BitOR($GUI_SS_DEFAULT_LABEL, $SS_CENTER, $SS_CENTERIMAGE))
$hButton_Win7 = GUICtrlCreateButton('Windows 7', 75, 130, 150, 30)
$hButton_Win8 = GUICtrlCreateButton('Windows 8+', 75, 160, 150, 30)
GUISetState()

While 1
  Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
      ExitLoop
	  
	Case $hButton_Win7
	  
	Case $hButton_Win8

  EndSwitch
WEnd


А иконку можно выбрать при компиляции, прочитай про AutoIt3Wrapper
 

InnI

AutoIT Гуру
Сообщения
4,561
Репутация
1,261
Fortress12
Код:
#AutoIt3Wrapper_Icon=D:\AutoIt3\Icons\au3.ico ; путь к иконке

#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <EditConstants.au3>

$hGUI = GUICreate('Example', 300, 190)
$nProgress = GUICtrlCreateProgress(60, 100, 180, 20, $PBS_MARQUEE)
GUICtrlSetState(-1, $GUI_HIDE)
$nLog = GUICtrlCreateEdit('', 10, 10, 280, 60, BitOR($ES_AUTOVSCROLL, $ES_READONLY))
$nLbl = GUICtrlCreateLabel('', 10, 80, 280, 20, BitOR($GUI_SS_DEFAULT_LABEL, $SS_CENTER, $SS_CENTERIMAGE))
$nBtn7 = GUICtrlCreateButton('Windows 7', 75, 130, 150, 30)
$nBtn8 = GUICtrlCreateButton('Windows 8+', 75, 160, 150, 30)
GUISetState()

While 1
  Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
      ExitLoop
    Case $nBtn7
      GUICtrlSetData($nLog, '')
      GUICtrlSetState($nBtn7, $GUI_DISABLE)
      ProgRun('calc.exe', 'Калькулятор')
      ProgRun('notepad.exe', 'Блокнот')
      ProgRun('mspaint.exe', 'Paint')
      GUICtrlSetState($nBtn7, $GUI_ENABLE)
    Case $nBtn8
      GUICtrlSetData($nLog, '')
      GUICtrlSetState($nBtn8, $GUI_DISABLE)
      ProgRun('mspaint.exe', 'Paint')
      ProgRun('notepad.exe', 'Блокнот')
      ProgRun('calc.exe', 'Калькулятор')
      GUICtrlSetState($nBtn8, $GUI_ENABLE)
  EndSwitch
WEnd

Func ProgRun($FileName, $ProgName)
  GUICtrlSetData($nLbl, 'Ждите...' & @TAB & '0.00 сек')
  GUICtrlSetState($nProgress, $GUI_SHOW)
  GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 1, 75)
  Local $iTimer = TimerInit()
  Local $iPid = Run($FileName)
  If GUICtrlRead($nLog) Then GUICtrlSetData($nLog, @CRLF, 1)
  GUICtrlSetData($nLog, 'Выполняю: ' & $ProgName, 1)
  While ProcessExists($iPid)
    Sleep(500)
    GUICtrlSetData($nLbl, 'Ждите...' & @TAB & StringFormat('%.2f сек', TimerDiff($iTimer) / 1000))
  WEnd
  GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 0, 0)
  GUICtrlSetState($nProgress, $GUI_HIDE)
  GUICtrlSetData($nLbl, '')
EndFunc
 
Автор
F

Fortress12

Новичок
Сообщения
9
Репутация
0
А как добавить чтобы вторая программа ожидала оконачания первой до запуска... заменил RunProg на RunWait и не работает....вообще ничего не запускает

и какое словечко добавить и где чтоб по окончанию выполнения скрипта окно закрывалось....дописал в конце exit и закрывается сразу(
 

InnI

AutoIT Гуру
Сообщения
4,561
Репутация
1,261
Fortress12 [?]
чтобы вторая программа ожидала оконачания первой
Именно так и работает - пока калькулятор не закроется, блокнот не запустится.

и где чтоб по окончанию выполнения скрипта
Это зависит от того, что вы будете считать "окончанием выполнения".
 
Автор
F

Fortress12

Новичок
Сообщения
9
Репутация
0
Именно так и работает - пока калькулятор не закроется, блокнот не запустится.
Я вношу данные через реестр первой командой через "regedit.exe /s reestr.reg"
Если вносить в реестр через /s то не ждет, а если обычной то ждет.
Возможно ли чтоб и через тихую ждал или внести в скрипт данные реестра? (примерчик киньте плиз я переделаю. пробовал через утилиту reg2exe от SanjaAlone, вроде конвертировал в скрипт, запускаю и ноль эмоций....)

Это зависит от того, что вы будете считать "окончанием выполнения".
Завершение установки последней из программ из списка


P.S. Заранее спасибо за потраченное время
 

InnI

AutoIT Гуру
Сообщения
4,561
Репутация
1,261
Fortress12 [?]
Я вношу данные через реестр первой командой через "regedit.exe /s reestr.reg"
Ну а раньше-то чего молчали? :stars:
Третьим параметром функции добавил передачу параметров программы.

Завершение установки последней из программ из списка
Из списка какой кнопки? Добавил в обе - ненужное удалите
Код:
#AutoIt3Wrapper_Icon=D:\AutoIt3\Icons\au3.ico ; путь к иконке

#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <EditConstants.au3>

$hGUI = GUICreate('Example', 300, 190)
$nProgress = GUICtrlCreateProgress(60, 100, 180, 20, $PBS_MARQUEE)
GUICtrlSetState(-1, $GUI_HIDE)
$nLog = GUICtrlCreateEdit('', 10, 10, 280, 60, BitOR($ES_AUTOVSCROLL, $ES_READONLY))
$nLbl = GUICtrlCreateLabel('', 10, 80, 280, 20, BitOR($GUI_SS_DEFAULT_LABEL, $SS_CENTER, $SS_CENTERIMAGE))
$nBtn7 = GUICtrlCreateButton('Windows 7', 75, 130, 150, 30)
$nBtn8 = GUICtrlCreateButton('Windows 8+', 75, 160, 150, 30)
GUISetState()

While 1
  Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
      ExitLoop
    Case $nBtn7
      GUICtrlSetData($nLog, '')
      GUICtrlSetState($nBtn7, $GUI_DISABLE)
      ProgRun('notepad.exe', 'Блокнот', @ScriptName)
      ProgRun('regedit.exe', 'Редактор реестра', '/s reestr.reg')
      ProgRun('calc.exe', 'Калькулятор')
      ProgRun('mspaint.exe', 'Paint')
      GUICtrlSetState($nBtn7, $GUI_ENABLE)
      Exit
    Case $nBtn8
      GUICtrlSetData($nLog, '')
      GUICtrlSetState($nBtn8, $GUI_DISABLE)
      ProgRun('mspaint.exe', 'Paint')
      ProgRun('notepad.exe', 'Блокнот')
      ProgRun('calc.exe', 'Калькулятор')
      GUICtrlSetState($nBtn8, $GUI_ENABLE)
      Exit
  EndSwitch
WEnd

Func ProgRun($FileName, $ProgName,  $Param = "")
  GUICtrlSetData($nLbl, 'Ждите...' & @TAB & '0.00 сек')
  GUICtrlSetState($nProgress, $GUI_SHOW)
  GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 1, 75)
  Local $iTimer = TimerInit()
  Local $iPid = Run($FileName & " " & $Param)
  If GUICtrlRead($nLog) Then GUICtrlSetData($nLog, @CRLF, 1)
  GUICtrlSetData($nLog, 'Выполняю: ' & $ProgName, 1)
  While ProcessExists($iPid)
    Sleep(500)
    GUICtrlSetData($nLbl, 'Ждите...' & @TAB & StringFormat('%.2f сек', TimerDiff($iTimer) / 1000))
  WEnd
  GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 0, 0)
  GUICtrlSetState($nProgress, $GUI_HIDE)
  GUICtrlSetData($nLbl, '')
EndFunc
 
Автор
F

Fortress12

Новичок
Сообщения
9
Репутация
0
Код:
#NoTrayIcon
#Region
#AutoIt3Wrapper_icon=Setup.ico
#EndRegion

#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <EditConstants.au3>

$hGUI = GUICreate('Example', 300, 190)
$nProgress = GUICtrlCreateProgress(60, 100, 180, 20, $PBS_MARQUEE)
GUICtrlSetState(-1, $GUI_HIDE)
$nLog = GUICtrlCreateEdit('', 10, 10, 280, 60, BitOR($ES_AUTOVSCROLL, $ES_READONLY))
$nLbl = GUICtrlCreateLabel('', 10, 80, 280, 20, BitOR($GUI_SS_DEFAULT_LABEL, $SS_CENTER, $SS_CENTERIMAGE))
$hButton_Win7 = GUICtrlCreateButton('Windows 7', 75, 130, 150, 30)
$hButton_Win8 = GUICtrlCreateButton('Windows 8+', 75, 160, 150, 30)
GUISetState()


While 1
  Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
      ExitLoop

    Case $hButton_Win7
      GUICtrlSetData($nLog, '')
      GUICtrlSetState($hButton_Win7, $GUI_DISABLE)
      GUICtrlSetData($nLbl, 'Ждите...' & @TAB & '0.00 сек')
      GUICtrlSetState($nProgress, $GUI_SHOW)
      GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 1, 75)
      ProgRun('regedit.exe /s config.reg', 'реестр')
      GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 0, 0)
      GUICtrlSetState($nProgress, $GUI_HIDE)
      GUICtrlSetData($nLbl, '')
      GUICtrlSetState($hButton_Win7, $GUI_ENABLE)
      Exit
    Case $hButton_Win8
      GUICtrlSetData($nLog, '')
      GUICtrlSetState($hButton_Win8, $GUI_DISABLE)
      GUICtrlSetData($nLbl, 'Ждите...' & @TAB & '0.00 сек')
      GUICtrlSetState($nProgress, $GUI_SHOW)
      GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 1, 75)
      ProgRun('regedit.exe /s config.reg', 'реестр')
      ProgRun('ClassicShellSetup.exe /passive', 'классическое меню ПУСК')
      GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 0, 0)
      GUICtrlSetState($nProgress, $GUI_HIDE)
      GUICtrlSetData($nLbl, '')
      GUICtrlSetState($hButton_Win8, $GUI_ENABLE)
      Exit
  EndSwitch
WEnd

Func ProgRun($FileName, $ProgName)
  GUICtrlSetData($nLbl, 'Ждите...' & @TAB & '0.00 сек')
  GUICtrlSetState($nProgress, $GUI_SHOW)
  GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 1, 75)
  Local $iTimer = TimerInit()
  Local $iPid = Run($FileName)
  If GUICtrlRead($nLog) Then GUICtrlSetData($nLog, @CRLF, 1)
  GUICtrlSetData($nLog, 'Выполняю: ' & $ProgName, 1)
  While ProcessExists($iPid)
    Sleep(500)
    GUICtrlSetData($nLbl, 'Ждите...' & @TAB & StringFormat('%.2f сек', TimerDiff($iTimer) / 1000))
  WEnd
  GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 0, 0)
  GUICtrlSetState($nProgress, $GUI_HIDE)
  GUICtrlSetData($nLbl, '')
EndFunc


Вот что у меня до этого было. Может это доменяем а то я уже в переменных запутался немного( Простите....
завершение скрипта добавил из вашего примера к себе.
По поводу реестра - сначала ЕСЛИ ВОЗМОЖНО первой командой должен идти реестр а потом вторая команда, в случае с вин7 это просто реестр без второй или третьей команды
 

InnI

AutoIT Гуру
Сообщения
4,561
Репутация
1,261
Fortress12 [?]
или третьей команды
Не вижу я у вас третьей команды. Проверяйте
Код:
#AutoIt3Wrapper_icon=Setup.ico

#RequireAdmin
#NoTrayIcon

#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <EditConstants.au3>

$hGUI = GUICreate('Example', 300, 190)
$nProgress = GUICtrlCreateProgress(60, 100, 180, 20, $PBS_MARQUEE)
GUICtrlSetState(-1, $GUI_HIDE)
$nLog = GUICtrlCreateEdit('', 10, 10, 280, 60, BitOR($ES_AUTOVSCROLL, $ES_READONLY))
$nLbl = GUICtrlCreateLabel('', 10, 80, 280, 20, BitOR($GUI_SS_DEFAULT_LABEL, $SS_CENTER, $SS_CENTERIMAGE))
$nBtn7 = GUICtrlCreateButton('Windows 7', 75, 130, 150, 30)
$nBtn8 = GUICtrlCreateButton('Windows 8+', 75, 160, 150, 30)
GUISetState()

While 1
  Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
      ExitLoop
    Case $nBtn7
      GUICtrlSetData($nLog, '')
      GUICtrlSetState($nBtn7, $GUI_DISABLE)
      ProgRun('regedit.exe', 'реестр', '/s config.reg')
      GUICtrlSetState($nBtn7, $GUI_ENABLE)
      Exit
    Case $nBtn8
      GUICtrlSetData($nLog, '')
      GUICtrlSetState($nBtn8, $GUI_DISABLE)
      ProgRun('regedit.exe', 'реестр', '/s config.reg')
      ProgRun('ClassicShellSetup.exe', 'классическое меню ПУСК', '/passive')
      GUICtrlSetState($nBtn8, $GUI_ENABLE)
      Exit
  EndSwitch
WEnd

Func ProgRun($FileName, $ProgName,  $Param = "")
  GUICtrlSetData($nLbl, 'Ждите...' & @TAB & '0.00 сек')
  GUICtrlSetState($nProgress, $GUI_SHOW)
  GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 1, 75)
  Local $iTimer = TimerInit()
  Local $iPid = Run($FileName & " " & $Param)
  If GUICtrlRead($nLog) Then GUICtrlSetData($nLog, @CRLF, 1)
  GUICtrlSetData($nLog, 'Выполняю: ' & $ProgName, 1)
  While ProcessExists($iPid)
    Sleep(500)
    GUICtrlSetData($nLbl, 'Ждите...' & @TAB & StringFormat('%.2f сек', TimerDiff($iTimer) / 1000))
  WEnd
  GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 0, 0)
  GUICtrlSetState($nProgress, $GUI_HIDE)
  GUICtrlSetData($nLbl, '')
EndFunc
 
Автор
F

Fortress12

Новичок
Сообщения
9
Репутация
0
Спасибо огромное.
ПОдскажите есть смысл завернуть через autoit сам рег файл и classic shell и скрипт в один exe файл или проще через 7z?
 

InnI

AutoIT Гуру
Сообщения
4,561
Репутация
1,261
Fortress12 [?]
завернуть через autoit сам рег файл и classic shell и скрипт в один exe файл
Это сделать можно
Код:
FileInstall()
А вот есть ли смысл - это каждый сам решает.
 
Автор
F

Fortress12

Новичок
Сообщения
9
Репутация
0
Добрый вечер
Код:
#AutoIt3Wrapper_icon=Setup.ico

#RequireAdmin
#NoTrayIcon

#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <EditConstants.au3>

$hGUI = GUICreate('Example', 300, 190)
$nProgress = GUICtrlCreateProgress(60, 100, 180, 20, $PBS_MARQUEE)
GUICtrlSetState(-1, $GUI_HIDE)
$nLog = GUICtrlCreateEdit('', 10, 10, 280, 60, BitOR($ES_AUTOVSCROLL, $ES_READONLY))
$nLbl = GUICtrlCreateLabel('', 10, 80, 280, 20, BitOR($GUI_SS_DEFAULT_LABEL, $SS_CENTER, $SS_CENTERIMAGE))
$nBtn7 = GUICtrlCreateButton('Windows 7', 75, 130, 150, 30)
$nBtn8 = GUICtrlCreateButton('Windows 8+', 75, 160, 150, 30)
GUISetState()

While 1
  Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
      ExitLoop
    Case $nBtn7
      GUICtrlSetData($nLog, '')
      GUICtrlSetState($nBtn7, $GUI_DISABLE)
      ProgRun('regedit.exe', 'реестр', '/s config.reg')
      GUICtrlSetState($nBtn7, $GUI_ENABLE)
      Exit
    Case $nBtn8
      GUICtrlSetData($nLog, '')
      GUICtrlSetState($nBtn8, $GUI_DISABLE)
      ProgRun('regedit.exe', 'реестр', '/s config.reg')
      ProgRun('ClassicShellSetup.exe', 'классическое меню ПУСК', '/passive')
      GUICtrlSetState($nBtn8, $GUI_ENABLE)
      Exit
  EndSwitch
WEnd

Func ProgRun($FileName, $ProgName,  $Param = "")
  GUICtrlSetData($nLbl, 'Ждите...' & @TAB & '0.00 сек')
  GUICtrlSetState($nProgress, $GUI_SHOW)
  GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 1, 75)
  Local $iTimer = TimerInit()
  Local $iPid = Run($FileName & " " & $Param)
  If GUICtrlRead($nLog) Then GUICtrlSetData($nLog, @CRLF, 1)
  GUICtrlSetData($nLog, 'Выполняю: ' & $ProgName, 1)
  While ProcessExists($iPid)
    Sleep(500)
    GUICtrlSetData($nLbl, 'Ждите...' & @TAB & StringFormat('%.2f сек', TimerDiff($iTimer) / 1000))
  WEnd
  GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 0, 0)
  GUICtrlSetState($nProgress, $GUI_HIDE)
  GUICtrlSetData($nLbl, '')
EndFunc


Возможно ли сюда добавить чекбокс над кнопкой Windows 7?
Поясню
Если поставить галочку в окне с названием "калькулятор", то после нажатия на кнопки ниже (Windows 7 или Windows 8) запустится калькулятор

Заранее спасибо
 

InnI

AutoIT Гуру
Сообщения
4,561
Репутация
1,261
Создание
Код:
$nChBox = GUICtrlCreateCheckbox('Название', 10, 70)


Проверка "галочки" и выполнение действий, если установлена
Код:
If BitAND(GUICtrlRead($nChBox), $GUI_CHECKED) Then
        ProgRun('regedit.exe', 'реестр', '/s config.reg')
        ProgRun('ClassicShellSetup.exe', 'классическое меню ПУСК', '/passive')
      EndIf
 
Автор
F

Fortress12

Новичок
Сообщения
9
Репутация
0
Код:
If BitAND(GUICtrlRead($nChBox), $GUI_CHECKED) Then
        ProgRun('regedit.exe', 'реестр', '/s config.reg')
        ProgRun('ClassicShellSetup.exe', 'классическое меню ПУСК', '/passive')
      EndIf


чекбокс выставил сверху а это куда?


Добавлено:
Сообщение автоматически объединено:

Разобрался спс)
 

Scampy

Новичок
Сообщения
50
Репутация
0
InnI сказал(а):
Fortress12
Код:
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>

$hGUI = GUICreate('Example', 200, 150)
$nProgress = GUICtrlCreateProgress(10, 100, 180, 20, $PBS_MARQUEE)
GUICtrlSetState(-1, $GUI_HIDE)
$nLog = GUICtrlCreateLabel('', 10, 10, 180, 20, BitOR($GUI_SS_DEFAULT_LABEL, $SS_CENTER, $SS_CENTERIMAGE))
$nLbl = GUICtrlCreateLabel('', 10, 80, 180, 20, BitOR($GUI_SS_DEFAULT_LABEL, $SS_CENTER, $SS_CENTERIMAGE))
$nBtn = GUICtrlCreateButton('Click me', 50, 120, 100, 30)
GUISetState()

While 1
  Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
      ExitLoop
    Case $nBtn
      GUICtrlSetState($nBtn, $GUI_DISABLE)
      GUICtrlSetData($nLbl, 'Ждите...' & @TAB & '0.00 сек')
      GUICtrlSetState($nProgress, $GUI_SHOW)
      GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 1, 50)
      ProgRun('calc.exe', 'Калькулятор')
      ProgRun('notepad.exe', 'Блокнот')
      ProgRun('mspaint.exe', 'Paint')
      ProgRun('cmd.exe', 'Консоль')
      GUICtrlSendMsg($nProgress, $PBM_SETMARQUEE, 0, 0)
      GUICtrlSetState($nProgress, $GUI_HIDE)
      GUICtrlSetData($nLbl, '')
      GUICtrlSetState($nBtn, $GUI_ENABLE)
  EndSwitch
WEnd

Func ProgRun($FileName, $ProgName)
  Local $iTimer = TimerInit()
  Local $iPid = Run($FileName)
  GUICtrlSetData($nLog, 'Выполняю: ' & $ProgName)
  While ProcessExists($iPid)
    Sleep(500)
    GUICtrlSetData($nLbl, 'Ждите...' & @TAB & StringFormat('%.2f сек', TimerDiff($iTimer) / 1000))
  WEnd
  GUICtrlSetData($nLog, '')
EndFunc

Привет!
А можно ли применить все вышенаписанyое к Чекбоксам? А не к определенным процессам? Т.е. что выводилось: Выполняется Чекбокс 1 и т.д.
Код:
#include <GUIConstants.au3>
#include <Constants.au3>

$_1 = GUICreate("Установка комплексов", 500, 425, 200, 200)

$Checkbox1 = GUICtrlCreateCheckbox("Комплекс 1", 30, 30, 200, 17)
$Checkbox2 = GUICtrlCreateCheckbox("Комплекс 2", 30, 60, 200, 17)
$Button1 = GUICtrlCreateButton("Установить", 30, 300, 100, 30)

GUISetState(@SW_SHOW)

While 1
    Switch GUIGetMsg()
        Case -3
            Exit
		 Case $Button1
            if GUICtrlRead($Checkbox1) = 1 Then
			   Runwait('prog1.exe')
			   Runwait('prog2.exe')
			   Runwait('prog3.exe')
			EndIf
            if GUICtrlRead($Checkbox2) = 1 Then
			   Runwait('prog4.exe')
			   Runwait('prog5.exe')
			   Runwait('prog6.exe')
			EndIf
      EndSwitch
   WEnd
 
Верх