Xinput allows a programmer to receive input from the controller and to output to the two rumble devices inside the controller. With this Microsoft is giving a big helping hand to developers. It even has events in for when the controller is unplugged or not detects. Plus it can address upto four controllers. This is exactly what I was looking for.
And I found this in the FAQ:
How do I disable ALT+TAB and other task switching?So there you have it, Alt-TAB should always be supported. Can't think of any games that disable it at the mo, but they do exist.
You don't!
UPDATE: The documentation isn't detailed, all the samples are in C++, nothing will compile and I don't seem to be able to find the correct DLL to write an application. So not exactly the best of starts.