http://support.microsoft.com/default.aspx?scid=kb;ja;318804
マネージではグローバルフックは出来ないとMicrosoftのHowtoに書いてあり、
それを信じていましたし、仕方ないからアンマネージのDLLでフックして、
マネージに渡す、という実装方法もいくつか見かけていたのですが。
今日ちょっと気になって英語版の同じ記事を見てみました。
http://support.microsoft.com/kb/318804/en-us
Except for the WH_KEYBOARD_LL low-level hook and the WH_MOUSE_LL low-level hook,
you cannot implement global hooks in the Microsoft .NET Framework.
【教訓】日本語版のKnowledgeBaseは、KB番号を日本語で探す為のインデックスである。内容は英語版に書いてある。