至っていないのであしからず。ローカルHookになっている(DLLにしていない)スレッドの管理の問題で、DLLにする必要があるらしい。ここもよさそうなお、WH_KEYBOARD_LLはDLLにしなくてよいらしい。メッセージループを持つことが必要。64bitの片方しかhookしていない公式による。読んでいないが32bitと64bitは別扱いのようです。ttp://uisteven.blog.fc2.com/blog-entry-3.html左記のサイトの中のリンクがウイルスサイトくさい。GC(ガベージコレクト)されてしまっている(GCがある言語特有)Hookのハンドルと、Hookに登録したProcはGCされないような工夫が必要。C#では、とりあえずメンバ宣言しておく。そのインスタンスも何かから参照されている状態にする必要があるかと。(Hookのハンドルのほうは、UnHookするのに使うのでうっかりGCされることはないと思うが、Procはやりがち。PostMessageなどと併用しているメッセージキューに積みすぎたり、送ったメッセージを再度Hookして無限ループしたり。SendKeysはタイミングが安定しないと公式が言っているようなのでやめたほうがよさげ。Marshal.GetLastWin32Error)のエラーコードを調べる。(ERROR_MOD_NOT_FOUND)であれば、おそらく下記に該当している。してしまっているなど。コードによってはコンパイルが通るので気づきにくい。コールバック関数を実行するスレッドをブロックしてしまっている(未検証)Formの初期化とかでフックすると、UIスレッドと同じスレッドでフックのコールバック処理が実行される。UIのイベント処理内で重い処理やユーザ操作待ちなどをすると、フックのコールバックが待たされてハマるかも。Thread.CurrentThread.ManagedThreadId.ToString());キーボードのフックについてコールバック関数の処理時間が長すぎる(タイムアウトしている)公式によるとWM_KEYBOARD_LLはタイムアウト時間が設定されており、超過すると勝手にHookが外されるらしい。外されたことを検出する有効な手段はないらしい。ほかのHookはどうなのか知らない。同ページの説明によるとタイムアウト時間はレジストリ設定(LowLevelHooksTimeout)によるらしいが、自分の環境では該当のレジストリキーが見つけられなかった。デフォルトは300msっぽい。10回超えるとダメらしい。https://nazochu.blogspot.com/2011/08/windows7.htmlhttps://blogs.msdn.microsoft.com/alejacma/2010/10/14/global-hooks-getting-lost-on-windows-7/「Fn」キーを取ろうとしている「Fn」キーはOSが受け付けないらしい。「Alt」キーを拾いそこねているWM_SYSKEYDOWNを見ていない。WM_KEYDOWNとWM_KEYUPをペアで処置できていない・・・というか原理的に無理かもしれないが。マウスのフック(WH_MOUSE_LL)について座標のスケーリングが異なるlParamで得られるマウス座標は高解像度対応版の座標らしい。requestStockLike1@kob58im趣味でC#で色々試してます。置いてるほとんどのC#サンプルコードは、Windows7以降デフォで入ってる環境でコンパイルできます。