Hopper is an extremely powerful tool OEMs have always had to test the stability of their PLATFORMs. With WM6 SDK, Hopper has been provided to ISV Application Developers as well, with a customizable FocusApp sample that maintains an application (or a group of) at foreground while tests are running. Refer to the "official" blog for whatever detail.
Some time ago I handled a request about a strange error with Hopper: I'm writing here as I noticed that some other developers had the same issue but this seems to be an unresolved topic (so this is going to be an "informative non-coding post"..). Hopper was failing its tests with the message "Start menu dead, not responding", even if after closing Hopper the tester could see that the application and the system were behaving as expected. After some investigation (thanks also to Reed&Steve, whose blog is here), we figured out that if the application is full-screen (i.e. it invokes SHFullScreen() API) then the programmer must add a message handler for VK_RETURN or VK_ESCAPE.
Hopper switches the application that should be tested after a while: this is its design so that it tests whole applications. To switch application, hopper uses start menu by sending VK_LWIN or clicking left upper side. In case it doesn’t response at all or hopper can’t detect start menu then it dismisses current foreground windows and try it again. But in order to dismiss the foreground window, this must handle VK_RETURN or VK_ESCAPE.
P.S: How to attach a debugger and use FocusApp so that you can have your application under the VS debugger while the test runs? Check out this.