2012-01-18 7 views
0

Iボタンをクリックかいないされている場合、ウィンドウメッセージを使用するプログラムを知っている必要があります:調べる

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*/ 
      } 
     } 
    } 

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

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

ボタンが押されていることが分かっていれば、私はその機能を一度行うだけです。

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

+0

関連:http://stackoverflow.com/questions/4127270/c-sharp-how-to-loop-while-mouse-button-is-held-down –

答えて

3

WM_KEYUPイベントを聴いて、関数を実行するか、関数を1回実行してWM_KEYUPになるまでロックすることができます。