2013-09-01 44 views
0

我有下面的代碼capture keys pressed:如何計算在C#鍵組合

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
    { 
     const int WM_KEYDOWN = 0x100; 
     const int WM_SYSKEYDOWN = 0x104; 

     if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN)) 
     { 
      int x; 
      switch (keyData) 
      { 
       case (Keys)131149: //case Keys.Control | Keys.M: 
        x = 1; 
        break; 
       case Keys.Alt | Keys.Z: 
        x = 2; 
        break; 
       case Keys.Shift | Keys.A: 
        x = 3; 
        break; 
       case (Keys)196685: //Keys.Control | Keys.Shift | Keys.M: 
        x = 1; 
        break; 
      } 
     } 

     return base.ProcessCmdKey(ref msg, keyData); 
    } 

你可以看到,組合鍵按Ctrl + + 中號 == 196685.

是有沒有辦法讓我在我的代碼中計算其他組合?

例如:Alt + F ==?等等......

+0

也許你的意思'情況Keys.Alt | Keys.F:'? (另一個說明,是否有一個特定的原因,你會試圖找到數值的組合評估?) – d3dave

回答

2

Console.Write((INT)(Keys.Alt | Keys.F))

或者更基本:

1000000000000000000 OR = 1000110 1000000000001000110

+0

你知道我怎麼能得到它甚至從int到鍵的反向? 例如,如果我的號碼是196685,我怎麼知道它意味着 Keys.Control | Keys.Shift | Keys.M? –

+0

196685 AND Keys.Control =真或假的是控制設置 –

+0

發現: (炭)196685 77 'M' (密鑰)(196685-(炭)196685) 移位|控制 –