hehe - that's a pretty broad question so I'll give you a pretty broad answer :P
The limitations of the various windows hooks are (just like anything else) the hooks themselves.
If a hook hasn't been written for something (or poorly written) then the limitation is that you can't use it.
I believe (not accessing external hooks often myself) that there are still alot of these that have not been written into the .Net libraries yet. So you have to resort to accessing unmanaged DLLs in order to get the access you may or may not require.