I have a big smile on my face because I've got a prototype working. I've written a macro called "Cancel Menu" and what it does is generate a list of running processes (this works only when the running macros occasionally volunteer information) and it brings up a list of running macro names that you can select/cancel.
This prototype code proves that this is possible. It doesn't yet prove that it's useful, and my current version of this macro doesn't look very impressive. Here's the menu that you see when you run it. Notice that two macro names (test macros) appear in the list. When I double click on any of the items, the macro by that name is cancelled. It's cool.
Here's the user interface:
The two names in the list above are just two macros that I have running. The names are meaningless. They could be any valid string, which are the names of your running macros.
And here's the coolest statement in my macro:
Notice that the above statement uses a dictionary to refer to the names of running macros, and cancels the one that the user selected from the above list. It's pretty sneaky using a dictionary to store the IDs of running macros. (The index of the dictionary is the name of the instance; the keys of the dictionary are the unique ID.)
Considering that I should probably update the interface to make it more professional, I won't upload the code yet. Also, I just noticed that since I'm using the name of the macro as the key, that means if you have two macros with the exact same name running at the same time, only one of them will be visible in the list. I'm not sure if there's any way to fix that.