SetWindowsHookEx() という API を使うと、他のウィンドウに対するさまざまなイベントを監視することができます。
デフォルトの動作であるローカルフックだとそのアプリケーションに対するイベントしかとれません。他のウィンドウのイベントをとるキーロガー的な動作を実現するにはグローバルフックにする必要があります。
グローバルフックを行うには、DLL のハンドルを引数として渡さなければならないため、DLL で実装しなければなりません。
参考:
– SetWindowsHookEx()(MSDN)
– 他のアプリケーションのメッセージを監視(doumo.jp)