Many operations on a Windows system requires using broadcast messages to all top-level application windows. Unfortunately, if any single application on your system stops responding, then that can block broadcast messages from being processed and may cause other applications to appear to stop responding too. Typically operations that depend on DDE (such as double-clicking on a document or shortcut) are the sort of thing that are affected in this way. This is a small Win32 console application that scans all running application windows on your desktop to detect ones that appear to be "hung" or unresponsive. When a hung window is detected, its HWND and process Id are printed out to the console. By looking at the output of my program, you can identify the actual cause of any unresponsiveness on your system and terminate that process if you feel that is appropriate. Note that detecting unresponsive applications is very similar to what the native Windows Task Manager does for visible application windows, but my application also checks the hidden windows and applications that are present too. (It's not surprising for there to be more than a hundred or more invisible windows on a normal system, since each application usually creates a few dozen for its own uses.)