The best way is to define a new standard for application monitoring, sell it to the companies you are interested in and get them to call your API. On the off-chance that you don't get buy-in, you could resort to some sort of nastiness with SetWindowsHookEx but I don't fancy your chances in Perl (e.g. using Win32::API) so the next best way is to write a little event logger in C and tail the log from Perl. This will work assuming those apps aren't actively protecting their message queues. Check out the WH_GETMESSAGE and GetMsgProc handler documentation on MSDN
perl -le "s,,reverse killer,e,y,rifle,lycra,,print"