Listen, I'm not making this stuff up.
Here's the official Microsoft Documentation.
At the end of the page here it says that you need at least Windows 95 or NT 3.1 (both the basic Win32 platforms). I've used hook procedures on XP, and they are still valid in Vista.
If you want to capture input when you application is not active, you have only two choices: use SetWindowsHookEx(), or hack the kernel.
Now please go and try to do it before complaining that it won't work. And remember, if you want a system-wide hook, you will need to put your hook callback in a DLL.