2016-06-15 78 views
1

Visual Studio 2015でC#をデバッグする際に問題が発生した場合の対処方法を見つけようとしています。アプリケーションがデバッグされていると、マウスカーソルがブレークポイントがヒットします。これは、アプリケーションがマウスとキーボードのフックを登録するためです。ブレークポイントがヒットすると、フックは入力を待っていますが、タイムアウトに達するまで(〜5秒)は何も受信しません。Windows 10にLowLevelHooksTimeoutのレジストリエントリがあります

したがって、私はいくつかの解決策をオンラインで見つけましたが、フックを再作成せずに実装するのは比較的簡単でした。私はLowLevelHooksTimeoutのレジストリエントリを追加して、ブレークポイントがヒットしたときにWindowsを次のフックイベントにすばやく移行させることができるかどうかを確認しようとしましたが、違いはありません。

また、生の入力を使用することは唯一の方法かもしれませんが、少しの作業が必要です。誰もがこの問題にぶつかり、偶然にすぐに利用できるソリューションがあるかどうか。

https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/f6032ca1-31b8-4ad5-be39-f78dd29952da/hooking-problem-in-windows-7?forum=windowscompatibility

https://security.stackexchange.com/questions/78732/unregistering-keyboard-hooks-by-timeout-expiration

+0

別のマシンでアプリケーションを実行し、リモートデバッガを使用します。 –

答えて

0

私は、このオープンソースのコードと一緒に行く終了: http://www.codeproject.com/Articles/17123/Using-Raw-Input-from-C-to-handle-multiple-keyboard

それは、C#で実装生の入力APIを持っています。そこには、デバイス情報などを提供するシンプルなWPFアプリケーションもあります(これは、特定のリンクのスクリーンショットにあるものです)。基礎となるコードを使用してアプリケーションに統合しました。一方、未処理入力側では、関連するイベントがパイプを下ってきたことを検出するたびにこれらのイベントを呼び出します。この方法は、私はAPIのバッファ・ヘッダ内のハードウェアの種類を確認する介して、これが行われるなど、マウス、キーボード、区別ProcessRawInput(Intpr)が呼ばれています:

if (_rawBuffer.header.dwType == DeviceType.RIM_TYPE_MOUSE) 
{ 
    // Do mouse stuff, invoke event 
} 

それは苦痛だったが、最終的に、このAPIは、デバッグを解決しましたマウス/キーボードフックを使う恐怖。

関連する問題