非グローバル WH_KEYBOARD フックをセットアップすると、正常に動作し、すべてのキーがキャッチされます。しかし、Alt+Tab を押してからウィンドウに戻ると、フックは理由もなく動作を停止します。これは、id = root のプロセスのすべてのキーボード メッセージをブロックしようとしている私のフック プロシージャです。
private static IntPtr HookCallback (int nCode, IntPtr wParam, IntPtr lParam)
{
var proc = 0u;
GetWindowThreadProcessId(GetForegroundWindow(), out proc);
if (proc != root) return CallNextHookEx(hooks[0], nCode, wParam, lParam);
return new IntPtr(1);
}
開発には、VirtualBox で 32 ビット Windows を使用します。
更新: 次のフックにパラメータをブロックまたは渡すことにも依存しません: 何もせずに次のフックを呼び出すコード バリアントは、Alt+Tab の後にも機能しなくなります。フォーカスを失ってウィンドウをアクティブにしても、Alt+Tab を使用しないとフックが停止しません。