It first grabs a list of all running macros (I'm sure there's a better way to do this, but I'm tired and need to get to sleep!). But by default, that list includes the full path, so a regular expression is used to trim all but the actual app name out.
Then that list is sorted, and finally, each name in the list is spoken.