#include <Misc.au3>
Opt('TrayMenuMode', 1)
_Singleton(@ScriptName)
If @Compiled Then
_RegRun() ;прописываем себя в автозагрузку
EndIf
HotKeySet('^{3}', '_Exit')
TraySetToolTip('Ctrl+3 - выход')
AdlibRegister('_MyProcessesCheck', 300000);проверяем каждые 5 минут
While 1
Sleep(100)
WEnd
Func _MyProcessesCheck()
Local $iPID
Local $aProcesses[5][4] = [[4],['script1.exe', 'C:\Program Files\папка1\', 9, 17], _
['script2.exe', 'C:\Program Files\папка2\', 10, 18], _
['script3.exe', 'C:\Program Files\папка3\', 11, 19], _
['script4.exe', 'C:\Program Files\папка4\', 12, 20]]
#cs
$aProcesses[0][0] - кол-во процессов, за которыми будем следить
$aProcesses[n][0] - имя процесса
$aProcesses[n][1] - путь к процессу
$aProcesses[n][2] - время(час), с которого процесс должен работать
$aProcesses[n][3] - время(час), с которого процесс должен прекратить работу
#ce
For $i = 1 To $aProcesses[0][0]
If @HOUR >= $aProcesses[$i][2] And @HOUR < $aProcesses[$i][3] Then
If Not ProcessExists($aProcesses[$i][0]) Then
$iPID = Run($aProcesses[$i][1] & $aProcesses[$i][0])
If $iPID Then
ConsoleWrite('Процесс ' & $aProcesses[$i][0] & ' запущен.' & @CR)
TrayTip('Мои процессы', 'Процесс ' & $aProcesses[$i][0] & ' запущен.', 3, 1)
Sleep(1000)
Else
ConsoleWrite('Не удалось запустить процесс ' & $aProcesses[$i][0] & @CR)
TrayTip('Мои процессы', 'Не удалось запустить процесс ' & $aProcesses[$i][0], 3, 3)
Sleep(1000)
EndIf
EndIf
Else
If ProcessExists($aProcesses[$i][0]) Then
If ProcessClose($aProcesses[$i][0]) Then
ConsoleWrite('Процесс ' & $aProcesses[$i][0] & ' закрыт' & @CR)
TrayTip('Мои процессы', 'Процесс ' & $aProcesses[$i][0] & ' закрыт', 3, 1)
Sleep(1000)
Else
ConsoleWrite('Не удалось закрыть процесс ' & $aProcesses[$i][0] & @CR)
TrayTip('Мои процессы', 'Не удалось закрыть процесс ' & $aProcesses[$i][0], 3, 3)
Sleep(1000)
EndIf
EndIf
EndIf
Next
EndFunc ;==>_MyProcessesCheck
Func _Exit()
Exit
EndFunc ;==>_Exit
Func _RegRun()
Local $sRegRun = 'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run'
If Not RegRead($sRegRun, @ScriptName) Or _
RegRead($sRegRun, @ScriptName) <> '"' & @ScriptFullPath & '"' Then
RegWrite($sRegRun, @ScriptName, 'REG_SZ', '"' & @ScriptFullPath & '"')
EndIf
EndFunc ;==>_RegRun