I had a chance to run your script and it does work. One word of advice is you should run that procedure as soon as you see the offending Process. I waited too long the first time and I couldn't retrieve the name. However I was ready the next time around!
I'm assuming your not running SQL 2000. Is that correct? I had to edit the proc to run on 2000. You had "master.sys.sysprocesses" I had to change it to "master.dbo.sysprocesses". Aside from that it worked well.
Good work and Thanks again! Now I have to dig into your procedure to understand the inner workings.