Странно, что никто из спецов до сих пор не отписался... Ладно, попробую я, в меру своих скромных возможностей - возможно решение получилось корявым.
Код:
Opt('TrayIconDebug', 1)
#include <File.au3>
#include <Process.au3>
Dim $aExeList = _FileListToArray(@ScriptDir, '*.exe', 1) ;если файл скрипта будет лежать НЕ в той же папке, где лежат экзешники, то меняем @ScriptDir на путь к папке с оными
Dim $aWinlist = WinList ()
;FileChangeDir('')
; опять же, если файл скрипта лежит отдельно, то раскомментируем строку выше и прописываем в кавычках путь к папке, в которой лежат экзешники
For $iFile = 1 To $aExeList[0] ; по очереди запускаем экзешники из этой папки
Run($aExeList[$iFile])
Sleep(500) ; время, необходимое для того, чтобы успело появиться окно устанавливаемой программы (может, его понадобится увеличить)
For $iList = 1 To $aWinlist[0][0] ; делаем список всех открытых окон в системе
If _ProcessGetName (WinGetProcess ($aWinlist[$iList][0])) = $aExeList[$iFile] Then ; двигаемся по нему, пока не найдем окно, вызванное нашим экзешником
WinSetTitle($aWinlist[$iList][0], '', 'Установка программы ' & $iFile); меняем имя этого окна на "Установка программы номер такой-то"
; Дальше - поскольку мы запускаем по очереди несколько программ и поэтому не имеем возможности задать WinWaitActive с определенным текстом, чтобы послать в это окно Enter, то мы тупо будем посылать Enter в наше окно с интервалом в 0,3 секунды до тех пор, пока это окно существует
While WinExists('Установка программы ' & $iFile)
ControlSend('Установка программы ' & $iFile, '', '', '{Enter}')
Sleep(300)
WEnd
EndIf
Next
Next
|