最上位ビットが設定されている場合はキーが押されており、最下位ビットが設定されている場合は、前回のGetAsyncKeyStateの呼び出し後にキーが押されました。ただし、この最後の動作に依存しないでください。[..]
戻り値の最下位ビットは、最後のクエリ以降にキーが押されたかどうかを示しますが、Windowsのプリエンプティブマルチタスクの性質により、別のアプリケーションがGetAsyncKeyStateを呼び出して、アプリケーションの代わりに「最近押された」ビットを受け取ることができます。戻り値の最下位ビットの動作は、16ビットWindowsアプリケーション(プリエンプティブではない)との互換性のために厳密に保持されているため、信頼しないでください。
私のプログラムでは、キーが現在押されている場所の戻り値にのみ関心があります。つまり、msdnで定義されているように、最下位ビットと最上位ビットの両方が設定されている場合(-32767)(これが現在の動作方法です)。ただし、32767(最下位ビットのない値)もチェックする必要があります。それが言うように、最下位ビットが別のプログラムによってインターセプトされるか、「信頼できない」場合は、それが何を意味するかに関係ありません。