OnEvent PROCESS_NOTEXISTS
Moderators: Dorian (MJT support), JRL
-
- Junior Coder
- Posts: 25
- Joined: Wed Jul 20, 2011 3:07 pm
OnEvent PROCESS_NOTEXISTS
I am having problems with the OnEvent>PROCESS_NOTEXISTS not firing.
Following is excerpts from my code. CopyFile.exe is a compiled script that starts xcopy.exe and displays a progress bar dialog. All of that works fine. The copy is accomplished and the progress bar dialog closes. The parent dialog indicates that the copy is running. The OnEvent is supposed to change that to "Completed" when the xcopy.exe process drops out, but it never seems to fire.
.
.
.
Let>RP_WAIT=0
Run>%Script_Dir%\CopyFile.exe /From=%BUFrom%\RWDDATA.RBK /To=%BUTo% /PLeft=%DialogLeft% /PTop=%DialogTop%
WaitProcessExists>xcopy.exe
OnEvent>PROCESS_NOTEXISTS,xcopy.exe,,CheckBU
SetDialogProperty>Dialog1,lblEOMR,Visible,True
SetDialogProperty>Dialog1,btnEOMR,Visible,True
SetDialogProperty>Dialog1,cmpHBackup,Caption,Running
SetDialogProperty>Dialog1,cmpHBackup,Visible,True
SetDialogProperty>Dialog1,btnHBackup,Visible,False
.
.
.
SRT>CheckBU
MDL>I'm in CheckBU
ReadIniFile>%SCRIPT_DIR%\CK_CheckPrinting.ini,PROCESS RESULTS,BU_Results,BUR
If>BUR=True
SetDialogProperty>Dialog1,cmpHBackup,Caption,Completed
OnEvent>PROCESS_NOTEXISTS,xcopy.exe,,
Endif
If>BUR=False
SetDialogProperty>Dialog1,cmpHBackup,Caption,Failed
OnEvent>PROCESS_NOTEXISTS,xcopy.exe,,
ASK>The cross machine backup copy failed!%CRLF%Do you want to try again?,ans
If>ans=YES
Goto>RetryBU
Else
Exit>0
Endif
Endif
END>CheckBU
Following is excerpts from my code. CopyFile.exe is a compiled script that starts xcopy.exe and displays a progress bar dialog. All of that works fine. The copy is accomplished and the progress bar dialog closes. The parent dialog indicates that the copy is running. The OnEvent is supposed to change that to "Completed" when the xcopy.exe process drops out, but it never seems to fire.
.
.
.
Let>RP_WAIT=0
Run>%Script_Dir%\CopyFile.exe /From=%BUFrom%\RWDDATA.RBK /To=%BUTo% /PLeft=%DialogLeft% /PTop=%DialogTop%
WaitProcessExists>xcopy.exe
OnEvent>PROCESS_NOTEXISTS,xcopy.exe,,CheckBU
SetDialogProperty>Dialog1,lblEOMR,Visible,True
SetDialogProperty>Dialog1,btnEOMR,Visible,True
SetDialogProperty>Dialog1,cmpHBackup,Caption,Running
SetDialogProperty>Dialog1,cmpHBackup,Visible,True
SetDialogProperty>Dialog1,btnHBackup,Visible,False
.
.
.
SRT>CheckBU
MDL>I'm in CheckBU
ReadIniFile>%SCRIPT_DIR%\CK_CheckPrinting.ini,PROCESS RESULTS,BU_Results,BUR
If>BUR=True
SetDialogProperty>Dialog1,cmpHBackup,Caption,Completed
OnEvent>PROCESS_NOTEXISTS,xcopy.exe,,
Endif
If>BUR=False
SetDialogProperty>Dialog1,cmpHBackup,Caption,Failed
OnEvent>PROCESS_NOTEXISTS,xcopy.exe,,
ASK>The cross machine backup copy failed!%CRLF%Do you want to try again?,ans
If>ans=YES
Goto>RetryBU
Else
Exit>0
Endif
Endif
END>CheckBU
- Marcus Tettmar
- Site Admin
- Posts: 7395
- Joined: Thu Sep 19, 2002 3:00 pm
- Location: Dorset, UK
- Contact:
Re: OnEvent PROCESS_NOTEXISTS
OnEvent requires a subroutine name. You seem to have some parms missing. Specify a subroutine which should run when the condition is true (the process ceases to exist).
Marcus Tettmar
http://mjtnet.com/blog/ | http://twitter.com/marcustettmar
Did you know we are now offering affordable monthly subscriptions for Macro Scheduler Standard?
http://mjtnet.com/blog/ | http://twitter.com/marcustettmar
Did you know we are now offering affordable monthly subscriptions for Macro Scheduler Standard?
-
- Junior Coder
- Posts: 25
- Joined: Wed Jul 20, 2011 3:07 pm
Re: OnEvent PROCESS_NOTEXISTS
In the OnEvent activation, I do have the subroutine specified as CheckBU: OnEvent>PROCESS_NOTEXISTS,xcopy.exe,,CheckBU
In the subroutine I deactivate the OnEvent with: OnEvent>PROCESS_NOTEXISTS,xcopy.exe,,
As I understand it, that is the proper approach.
I do not pass the second parameter as it is my understanding that the PROCESS_NOTEXISTS does not use the second parameter.
Am I misunderstanding your response?
In the subroutine I deactivate the OnEvent with: OnEvent>PROCESS_NOTEXISTS,xcopy.exe,,
As I understand it, that is the proper approach.
I do not pass the second parameter as it is my understanding that the PROCESS_NOTEXISTS does not use the second parameter.
Am I misunderstanding your response?
- Marcus Tettmar
- Site Admin
- Posts: 7395
- Joined: Thu Sep 19, 2002 3:00 pm
- Location: Dorset, UK
- Contact:
Re: OnEvent PROCESS_NOTEXISTS
I don't see the subroutine specified in you original code but I'm viewing on my phone as away so maybe it's just the formatting going wrong, apologies.
Marcus Tettmar
http://mjtnet.com/blog/ | http://twitter.com/marcustettmar
Did you know we are now offering affordable monthly subscriptions for Macro Scheduler Standard?
http://mjtnet.com/blog/ | http://twitter.com/marcustettmar
Did you know we are now offering affordable monthly subscriptions for Macro Scheduler Standard?
Re: OnEvent PROCESS_NOTEXISTS
@Mick
I took your code and modified it a bit as I didn't have your executable. Just added a line to copy some data from one place to another using xcopy. Also added a message box to monitor what might be happening. Code is
When I run this I find that the OnEvent for PROCESS_NOTEXISTS doesn't get turned off when you use the code line
OnEvent>PROCESS_NOTEXISTS,xcopy.exe,,
Not saying this is correct behavior but there's not much I can do about it other than report it. I suggest you add a little loop in your script that tests the xcopy.exe process using the ProcessExists> function. Something like this:
Simply replace the OnEvent>PROCESS_NOTEXISTS,xcopy.exe,,CheckBU line with this snippet and let us know if things are better.
I took your code and modified it a bit as I didn't have your executable. Just added a line to copy some data from one place to another using xcopy. Also added a message box to monitor what might be happening. Code is
Code: Select all
Let>Msg_xpos=0
Let>Msg_ypos=0
Let>msg_cnt=0
Let>RP_WAIT=0
Run>cmd /c xcopy i:\dick\pvsw\*.* i:\Dick\newhr\ /s /c /y
WaitProcessExists>xcopy.exe
OnEvent>PROCESS_NOTEXISTS,xcopy.exe,,CheckBU
Label>Loop
Wait>0.01
Goto>Loop
SRT>CheckBU
Add>msg_cnt,1
SetControlText>Macro Scheduler Message,TMemo,1,msg_cnt
OnEvent>PROCESS_NOTEXISTS,xcopy.exe,,
If>msg_cnt=1
OnEvent>PROCESS_NOTEXISTS,xcopy.exe,,
MDL>I'm in CheckBU
Message>
EndIf
END>CheckBU
OnEvent>PROCESS_NOTEXISTS,xcopy.exe,,
Not saying this is correct behavior but there's not much I can do about it other than report it. I suggest you add a little loop in your script that tests the xcopy.exe process using the ProcessExists> function. Something like this:
Code: Select all
Label>CheckProcessExists
ProcessExists>Xcopy.exe,PExRes
If>PExRes=True
Wait>0.01
Goto>CheckProcessExists
Else
GoSub>CheckBU
EndIf
-
- Junior Coder
- Posts: 25
- Joined: Wed Jul 20, 2011 3:07 pm
Re: OnEvent PROCESS_NOTEXISTS
Thanks JRL
The problem with the monitor approach is that the xcopy and progress bar are in a child process (script) of a parent that fires the child process off and then continues with a series of other functions that are being accomplished. I don't want the user having to wait for the copy of 500MB unnecessarily. When the copy process is completed, I want the parent to indicate that on it's dialog. When the parent reaches the point that the copy must have been completed, I check that it has in fact completed and wait if it hasn't. The function of the OnEvent within the parent process is simple to change the status in the parent dialog.
The problem with the monitor approach is that the xcopy and progress bar are in a child process (script) of a parent that fires the child process off and then continues with a series of other functions that are being accomplished. I don't want the user having to wait for the copy of 500MB unnecessarily. When the copy process is completed, I want the parent to indicate that on it's dialog. When the parent reaches the point that the copy must have been completed, I check that it has in fact completed and wait if it hasn't. The function of the OnEvent within the parent process is simple to change the status in the parent dialog.
Re: OnEvent PROCESS_NOTEXISTS
I've submitted a request to create a method or function to deactivate PROCESS_NOTEXISTS.
In the mean time, here's another possibility.
- Create and run a dynamic script that invokes PROCESS_NOTEXISTS OnEvent.
- When the xcopy ends the dynamic script creates a file then quits running.
- The master script uses a File_Exists OnEvent that jumps to your CheckBU subroutine.
- First lines in the subroutine delete the dynamic script files.
In the mean time, here's another possibility.
- Create and run a dynamic script that invokes PROCESS_NOTEXISTS OnEvent.
- When the xcopy ends the dynamic script creates a file then quits running.
- The master script uses a File_Exists OnEvent that jumps to your CheckBU subroutine.
- First lines in the subroutine delete the dynamic script files.
Code: Select all
Let>RP_WAIT=0
Run>%Script_Dir%\CopyFile.exe /From=%BUFrom%\RWDDATA.RBK /To=%BUTo% /PLeft=%DialogLeft% /PTop=%DialogTop%
WaitProcessExists>xcopy.exe
LabelToVar>ProcessExistScript,ProcExistScp
WriteLn>%Temp_Dir%~~WaitingForXcopyComplete~~.scp,wres,ProcExistScp
ExecuteFile>%Temp_Dir%~~WaitingForXcopyComplete~~.scp
OnEvent>File_Exists,%temp_dir%~~XcopyComplete~~,,CheckBU
SetDialogProperty>Dialog1,lblEOMR,Visible,True
SetDialogProperty>Dialog1,btnEOMR,Visible,True
SetDialogProperty>Dialog1,cmpHBackup,Caption,Running
SetDialogProperty>Dialog1,cmpHBackup,Visible,True
SetDialogProperty>Dialog1,btnHBackup,Visible,False
.
.
.
SRT>CheckBU
DeleteFile>%temp_dir%~~XcopyComplete~~
DeleteFile>%Temp_Dir%~~WaitingForXcopyComplete~~.scp
MDL>I'm in CheckBU
ReadIniFile>%SCRIPT_DIR%\CK_CheckPrinting.ini,PROCESS RESULTS,BU_Results,BUR
If>BUR=True
SetDialogProperty>Dialog1,cmpHBackup,Caption,Completed
Endif
If>BUR=False
SetDialogProperty>Dialog1,cmpHBackup,Caption,Failed
ASK>The cross machine backup copy failed!%CRLF%Do you want to try again?,ans
If>ans=YES
Goto>RetryBU
Else
Exit>0
Endif
Endif
END>CheckBU
/*
ProcessExistScript:
OnEvent>PROCESS_NOTEXISTS,xcopy.exe,,XCopy_Done
Label>Loop
Wait>0.01
Goto>Loop
SRT>XCopy_Done
WriteLn>%temp_dir%~~XcopyComplete~~,wres,
Exit>0
END>XCopy_Done
*/
-
- Junior Coder
- Posts: 25
- Joined: Wed Jul 20, 2011 3:07 pm
Re: OnEvent PROCESS_NOTEXISTS
Thank you JRL
I will put your suggestion in place later today and let you know.
I will put your suggestion in place later today and let you know.