Looping through the processes may be slow and as you have done you have to be prepared for exceptions, which again cause delay.
From your code it's not clear what you're looping (the For is missing) but what if you would use
GetProcesses[
^] to get all the processes before entering the loop and to avoid constantly searching for the processes.
Another(small) enhancement could be the usage of a
With[
^] block, for example for
blist
.
Another thing is that since you can't make this lightning fast, why not show a 'splash' screen for the user and tell about the progress. You could have a background worker searching for the processes and the UI would show what happens all the time. This doesn't take away the duration but it gives a better user experience when you see that the program isn't hung.