KevinT Posted January 21, 2008 Share Posted January 21, 2008 Hi, Someone created for me a script because i'm totally a newby. But i would like to change and let check up 3 times a day if a process is running. Could you please help me? Can I for example 3 times $runtime = (example: 1934). Do you have suggestions? #include <File.au3> Opt("TrayIconHide", 0) ; 0=show, 1=hide tray icon FileInstall("psapi.dll","psapi.dll",1) ; Needed on NT4 $runtime = 1855 ; Start at 18:55 While 1 If @HOUR & @MIN = $runtime Then RunCheck() Sleep(55000) ; Poll every 55 seconds WEnd Func RunCheck() If ProcessExists("BLABLA.exe") Then ; Check if 'modemstack.exe' is running _FileWriteLog(@ScriptDir & "\BLABLA.log","'BLABLA.exe' is running") Else _FileWriteLog(@ScriptDir & "\BLABLA.log","'BLABLA.exe' is NOT running") If ProcessExists("BLABLA.exe") Then ; Check if 'OTHERBLABLA.exe' is running _FileWriteLog(@ScriptDir & "\blabla.log","'otherblabla.exe' is running ... trying to stop") ProcessClose("otherblabla.exe") ; Stop 'otherblabla.exe' ProcessWaitClose("otherblabla.exe") _FileWriteLog(@ScriptDir & "\blabla.log","'otherblabla.exe' is stopped") Endif _FileWriteLog(@ScriptDir & "\BLABLA.log","restarting 'BLABLA.exe'") Run("c:\Program Files\BLALBA\BLABLA\BLABLA.exe",@ScriptDir) ; Restart 'BLABLA.exe' EndIf Sleep(82800000) ; Sleep for 23 hours EndFunc Link to comment Share on other sites More sharing options...
Tomb Posted January 27, 2008 Share Posted January 27, 2008 do it like this While 1 ;junkadunk you want to be done ;junkadunk you want to be done ;junkadunk you want to be done Sleep(28800000) WEnd Link to comment Share on other sites More sharing options...
Squirrely1 Posted January 27, 2008 Share Posted January 27, 2008 (edited) KevinT - This looks like it will do what you want your script to do, run RunCheck() every eight hours - but has not been tested: #NoTrayIcon ; Purpose: Manages the processes BLABLA.EXE & OTHERBLABLA.exe #include <File.au3> Opt("TrayIconHide", 0) HotKeySet("{F9}", "ExitModule") FileInstall("psapi.dll", "psapi.dll", 1); Needed on NT4 Global Const $LOG_FILE = @ScriptDir & "\BLABLA.log" Global Const $BLA_PATH = "C:\Program Files\BLABLA\BLABLA\" Global Const $EXE_01 = "BLABLA.EXE" Global Const $EXE_02 = "OTHERBLABLA.EXE" Global Const $EIGHT_HOURS = 8 * 60 * 60 * 1000 AdlibEnable("RunCheck", $EIGHT_HOURS) While 1 Sleep(256) WEnd Func RunCheck() If ProcessExists($EXE_01) Then; Check if BLABLA.EXE not 'modemstack.exe' is running _FileWriteLog($LOG_FILE, "'" & $EXE_01 & "' is running.") Else _FileWriteLog($LOG_FILE, "'" & $EXE_01 & "' is NOT running.") ; If ProcessExists($EXE_02) Then _FileWriteLog($LOG_FILE, "'" & $EXE_02 & "' is running ... trying to stop.") ProcessClose($EXE_02) ProcessWaitClose($EXE_02) _FileWriteLog($LOG_FILE, "'" & $EXE_02 & "' successfully stopped.") EndIf _FileWriteLog($LOG_FILE, "Now restarting '" & $EXE_01 & "'.") Run($BLA_PATH & $EXE_01, @ScriptDir) EndIf EndFunc;==>RunCheck Func ExitModule() Exit EndFunc There should be a way to exit the program and there is now - by pressing function key F9. The AdLibEnable function will wait for eight hours before ever running the function called RunCheck() so if you want to run that function once as soon as the script begins execution, just add this line before the line that says "While 1" - RunCheck() Edited January 27, 2008 by Squirrely1 Das Häschen benutzt Radar Link to comment Share on other sites More sharing options...
KevinT Posted January 29, 2008 Author Share Posted January 29, 2008 Hi again, I would like to say first of all. Thank you very much! I'll check what I can do of it is really works. The hotkey is not neccessary because it's important that the script is running in background, thanks for the tip. You will get a reply soon after testing. thx a lot Kevin Link to comment Share on other sites More sharing options...
Squirrely1 Posted January 29, 2008 Share Posted January 29, 2008 (edited) The hotkey is not neccessary because it's important that the script is running in background, thanks for the tip...You will get a reply soon after testing.KevinKevinT - you should have a way to stop a script, all the way up until the time you have tested it ten times and thought about what it does carefully.But the reason I replaced you filenames with constants is that constants use less memory. And if you are going to have this script running all the time, you should look into _ReduceMemory(), which can be found here on the forums. Edited January 29, 2008 by Squirrely1 Das Häschen benutzt Radar Link to comment Share on other sites More sharing options...
KevinT Posted January 29, 2008 Author Share Posted January 29, 2008 (edited) I would like specify the hours also in place of each 8 hours to check the processes, it's possible? Like: 1. On 12:00 2. On 15:00 3. On 17:45 Edited January 29, 2008 by KevinT Link to comment Share on other sites More sharing options...
KevinT Posted February 15, 2008 Author Share Posted February 15, 2008 KevinT - This looks like it will do what you want your script to do, run RunCheck() every eight hours - but has not been tested: #NoTrayIcon ; Purpose: Manages the processes BLABLA.EXE & OTHERBLABLA.exe #include <File.au3> Opt("TrayIconHide", 0) HotKeySet("{F9}", "ExitModule") FileInstall("psapi.dll", "psapi.dll", 1); Needed on NT4 Global Const $LOG_FILE = @ScriptDir & "\BLABLA.log" Global Const $BLA_PATH = "C:\Program Files\BLABLA\BLABLA\" Global Const $EXE_01 = "BLABLA.EXE" Global Const $EXE_02 = "OTHERBLABLA.EXE" Global Const $EIGHT_HOURS = 8 * 60 * 60 * 1000 AdlibEnable("RunCheck", $EIGHT_HOURS) While 1 Sleep(256) WEnd Func RunCheck() If ProcessExists($EXE_01) Then; Check if BLABLA.EXE not 'modemstack.exe' is running _FileWriteLog($LOG_FILE, "'" & $EXE_01 & "' is running.") Else _FileWriteLog($LOG_FILE, "'" & $EXE_01 & "' is NOT running.") ; If ProcessExists($EXE_02) Then _FileWriteLog($LOG_FILE, "'" & $EXE_02 & "' is running ... trying to stop.") ProcessClose($EXE_02) ProcessWaitClose($EXE_02) _FileWriteLog($LOG_FILE, "'" & $EXE_02 & "' successfully stopped.") EndIf _FileWriteLog($LOG_FILE, "Now restarting '" & $EXE_01 & "'.") Run($BLA_PATH & $EXE_01, @ScriptDir) EndIf EndFunc;==>RunCheck Func ExitModule() Exit EndFunc There should be a way to exit the program and there is now - by pressing function key F9. The AdLibEnable function will wait for eight hours before ever running the function called RunCheck() so if you want to run that function once as soon as the script begins execution, just add this line before the line that says "While 1" - RunCheck() Hi again, I tested and it works fine Thanks a lot. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now