Launching apps & games from Vista Media Center (VMC), Part 2
Tags: EMUCenter, Game, Media Center, Utility, World of Warcraft
In my previous post on this topic, I discussed the basics of extending Media Center to add entries to the menus, specifically Beyond TV from SnapStream Media. Click here to see that post.
Once I had that figured out and working, I figured I’d venture to another application used quite a bit by my family - particularly by my boys - on the HTPC: World of Warcraft (or WoW) by Blizzard Entertainment (I’ll talk about WoW specifically in a later post). As a stated in my earlier post, I’d really like to use VMC as the center launching point for all applications and media. With my successes with Beyond TV, I thought surely I could duplicate that technique to launch World of Warcraft from Media Center.
The first thing I did was to modify the Beyond TV XML file and various scripts. It kind of worked, but not really. The biggest problem with this solution for WoW is that when you launch it, you are actually launching a launcher program which checks to see if there are updates that need to be applied. You then click Play which launches another application and then exits. The other application sticks around until you exit from the game. The problem is that Media Center doesn’t know anything about the other application. It only knows about the first one. When that exits, it attempts to reassume control which causes fits for the real WoW application.
So how do we solve this? What if we run a command script that waits for the second application to complete before returning? That sounds like a simple enough solution, so I set out to find a tool that would wait for a Windows process to complete. I was dumbfounded when I couldn’t find anything after searching on the Internet for an hour or more. Oh well. I have the tools. I can rebuild it…oh wait, wrong decade
.
I decided to write a tool that would find a process based on criteria specified on the command line and then wait until it exited or for a specified amount of time had elapsed. I decided to add support for waiting without specifying a process as well, which would allow me to put a sleep in my scripts (e.g. wait for 2 seconds before doing anything else). I also decided that the fastest way for me to write this was to use C#. It would have produced a much smaller application had I written it in C++, but I didn’t want to spend a bunch of time doing it. The result is Wait.exe. See the details of this command line utility in this post. You can also download the application from the Downloads page.
So did this work? Nope. Why not? Because VMC wouldn’t release the DirectX surface (I’m guessing). I did find something that did work, however - EMUCenter. EMUCenter is intended for providing a central place in Media Center for emulating games from consoles such as SNES, Sega Genesis, Nintendo 64, etc. However, it has all the infrastructure in place to launch any application. It basically puts Media Center on hold while the application launches, which works really well for preventing it from interfering with the application. I’ve found that it works really well for World of Warcraft (using Wait.exe), Internet Explorer, and Beyond TV. The one gotcha is that because Media Center is waiting for the application that was launched to complete, if you Alt-Tab back to Media Center the screen will be rather blank. The trick to using it, then, is don’t launch things that you want to leave running.
There’s a lot more to EMUCenter than I have tried. The author is also quite responsive to change and feature requests made on the EMUCenter thread on TheGreenButton.com.
Resources
- EMUCenter home page
- Thread on TheGreenButton.com
- Script package for running World of Warcraft under EMUCenter (pending)




October 13th, 2007 at 4:16 am
Oh, the newer (in testing) version of EMUCenter is a little more responsive if you go back to the Media Center window - but I’m afraid the only option it offers at the moment is ‘Quit Game’ to close the currently running game.
But at least it’s not a black screen anymore