1

ゲームへのアドオンのインターフェイスを開発しています。ゲーム API を使用できません (コードはゲームに依存しない必要があるなどの理由により)、ユーザーからキーボード入力を取得する必要があるため、キーボード フック (WH_KEYBOARD) を使用してユーザーを処理することにしました。特定の条件を満たしたときに入力します。
問題は、入力を正しく受信して処理できる一方で、フックがCallNextHookExの代わりに TRUE を返すと、システムが期待どおりに処理を進めるまでに多くの時間 (800 ミリ秒をはるかに超える) がかかるように見え、それが受け入れられないことです。流動的なタイピング体験さえ許しません。
私が達成しなければならないことは、キー プレス メッセージが WndProc に到達するのを防ぐことです。したがって、問題は、ゲームのパフォーマンスをあまり損なわずに目標を達成するにはどうすればよいかということです。
編集:特定の要件 (不正行為に関連していないにもかかわらず、私のコードで問題を引き起こす可能性のあるアンチチートを使用するゲーム) のため、アクティブな wndproc をサブクラス化することはオプションではありません。

4

4 に答える 4

0

キーボード フックによって動作が遅くなることはありません。800 ミリ秒の遅延の原因となる何か他のことが起こっている可能性があります。フックが何もせず、単に TRUE を返すだけでも遅いですか?

于 2009-06-27T15:52:34.877 に答える
0

自分の質問に答えるのが好きではないのと同じくらい、遅れの原因を見つけました。私がコードをテストしたゲームのメッセージ ポンプは while(PeekMessage) { GetMessage... } で実装されており、キーボード入力メッセージを削除すると、GetMessage が一時的にブロックされました。PostMessage と WM_NULL を使用すると、GetMessage がブロックされるのを防ぐことができました。

于 2009-06-28T20:07:04.470 に答える