WASD やマウス ボタンなどのキャラクター コントロールに GetAsyncKeyState() を使用し、テキスト入力やカーソル コントロールなどのメニューに Windows メッセージング システムを使用するゲームを作成しています。
ときどき、コンピューターが GetAsyncKeyState() が何も返さないという奇妙な状態になることがあります。ゲームがクラッシュしたときと関連しているようです。コンピューターがこの状態になると、コンピューターを再起動しない限り、それを取得する方法がわかりません。
この場合、Windows メッセージング システムは正常に動作します。「W」キーを入力すると、WM_KEYDOWN メッセージが表示され、メニュー システムに文字が表示されますが、通常は機能する次の方法は失敗します。
bool result = (GetAsyncKeyState(vkey) & 0x8000) != 0;
私が知る限り、これは外部プログラム (コンピューター間でマウス/キーボード入力を共有するために使用する Synergy+ など) によって引き起こされていますが、まだ証明できていません。
原因が何であれ、この問題がエンド ユーザーに発生することは望ましくありません。このような状態を診断して修復する手法はありますか?
編集: おそらく、これはある種のドライバーの問題ですか? コンピューターがこの状態になると、追加のボタンに割り当てたショートカットをマウスが処理しなくなることに気付きました。このような場合に誰が責任を負うべきかを知るには、これらすべてがどのように機能するかについて十分に知りません.