lyledg Posted December 15, 2005 Share Posted December 15, 2005 (edited) I have coded a GUI that calls robocopy.exe, and as part of the exit routine of this GUI I want to check if the robocopy process is running. That is easy enough to do, but what if I had multiple instances of robocopy.exe running on the same box. Question is: How do I ensure programatically that I have ended only my latest instance of robocopy.exe that was created through my compiled GUI. I want to kill the PID rather than exe name, as I assume the latest PID of Robocopy.exe in task manager will be the latest process correct? This is what I already code wise: Dim $Yes = 6, $No = 7 $i_PID = "Robocopy.exe" _ProcessGetName ($i_PID) If ProcessExists($i_PID) Then $Question = MsgBox(262180, "Question?", "Robocopy process still running, end it now?") If $Question = $Yes Then ProcessClose($i_PID) SplashTextOn("Exited", "Robocopy copy process killed", 220, 30, -1, -1, 17, "", 12) Sleep(2000) SplashOff() Return EndIf Else Exit EndIf Are there any UDF's out there that will do the opposite of _ProcessGetName ( $iPID ), meaning getting the PID of the named process...Something like _ProcessGetPID(Name of exe to check) Any guidance will be much appreciated.. Cheers Edited December 15, 2005 by lyledg Link to comment Share on other sites More sharing options...
MHz Posted December 15, 2005 Share Posted December 15, 2005 You should already know the PID as your script started it and can manage it ? $pid1 = Run('robocopy.exe') $pid2 = Run('robocopy.exe') $pid3 = Run('robocopy.exe') ProcessWaitClose($pid1) ProcessWaitClose($pid2) If ProcessExists($pid3) Then ProcessClose($pid3) Link to comment Share on other sites More sharing options...
Valuater Posted December 15, 2005 Share Posted December 15, 2005 (edited) i think it is a little simpler than your effort $PID = ProcessExists("notepad.exe"); Will return the PID or 0 if the process isn't found. If $PID Then ProcessClose($PID) to be sure that you are closing the correct PID $PID = Run("notepad.exe"); this should be a unique identifier ( if i am correct ) sleep(2000) ProcessClose($PID) 8) oops..... MHz got there first ( and i was right..lol) Edited December 15, 2005 by Valuater Link to comment Share on other sites More sharing options...
lyledg Posted December 15, 2005 Author Share Posted December 15, 2005 Thanks Guys, it was simple in the end...I was calling robocopy through compsec which of course was giving me a different PID than the robocopy.exe process would have.... 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