0

ボタンがクリックされているかどうかを知るためにWindowsメッセージを使用するプログラムがあります:

IntPtr GetMsg(int nCode, IntPtr wParam, IntPtr lParam)
    {
        if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
        {
            int vkCode = Marshal.ReadInt32(lParam);

            if ((Keys)vkCode == Keys.SomeKey)
            {
                /*Functions*/
            }
         }
     }

ボタンはどこでも押すことができ、プログラムは引き続きそれらを処理します。

問題は、ユーザーが特定のボタンを押しているときはいつでも、ボタンが実行する機能が短時間に何度も繰り返されることです。また、機能はそれほど重くはありませんが、コンピューターがフリーズしたり、数秒間動作が遅くなったりします。

ボタンが押されていることがわかっている場合は、その機能を 1 回だけ実行します。

ボタンが押されていることを示す Windows メッセージにフラグまたは何かがありますか?

4

1 に答える 1

3

WM_KEYUPイベントをリッスンして関数のみを実行するか、関数を 1 回実行して を取得するまでロックすることができますWM_KEYUP

于 2012-01-18T13:58:48.007 に答える