[DllImport("user32")] private static extern short GetKeyState(int virtKey); private const int VK_LCONTROL = 0xA2; private const int VK_RCONTROL = 0xA3;
public bool PreFilterMessage(ref Message m) { // si le message est une pression sur touche et que la touche est F1if ( m.Msg WM_KEYDOWN && m.WParam (IntPtr)Keys.F1) { // si le message est destiné a notre form ou un controle qu'il contientif ( m.HWnd form.Handle || form.Contains(Control.FromHandle(m.HWnd)) true ) { // récupération des etats des touches ctrl short keystate; bool lctrl, rctrl; keystate = GetKeyState(VK_LCONTROL);lctrl ((keystate & 0x8000) 0x8000 ); keystate = GetKeyState(VK_RCONTROL);rctrl ((keystate & 0x8000) 0x8000 ); if ( lctrl false && rctrl false) MessageBox.Show("F1"); else if ( lctrl == true ) MessageBox.Show("LCTRL+F1"); else if ( rctrl == true ) MessageBox.Show("RCTRL+F1"); // blocage du message return true; } } // le message n'etait pas celui qu'on attendais, on le laisse passer return false; }
using System.Runtime.InteropServices;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question#define VK_LSHIFT 0xA0 #define VK_RSHIFT 0xA1 #define VK_LCONTROL 0xA2 #define VK_RCONTROL 0xA3 #define VK_LMENU 0xA4 #define VK_RMENU 0xA5
#define VK_SHIFT 0x10 #define VK_CONTROL 0x11 #define VK_MENU 0x12