程式僅扮演訊息接收者,系統定時通知手柄狀態。問題:按下並放開一個按鍵,系統可能在這段極短時間內發送 N 次訊息(N 取決於 uPeriod 與按鍵速度),若直接處理會導致單次點擊觸發多次動作(如角色移動十步)。
不向系統註冊,自行按需呼叫 API 取得狀態。
[DllImport("winmm.dll")]
public static extern int joyGetPos(int uJoyID, ref JOYINFO pji);
[DllImport("winmm.dll")]
public static extern int joyGetPosEx(int uJoyID, ref JOYINFOEX pji);
下文將詳細講解 joyGetPosEx 使用與按鍵去抖邏輯。