public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) { if (nCode >= 0) { KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); Keys k = (Keys)Enum.Parse(typeof(Keys), kbh.vkCode.ToString()); hotkeys.Add(k); if (hotkeys.Contains(Keys.LControlKey) && hotkeys.Contains(Keys.LMenu) && hotkeys.Contains(Keys.J)) { hotkeys.Clear(); BlockInput(false); GlobalObj.isScreenLocked = false; Tool.Log("键盘鼠标已解锁"); } else if (hotkeys.Contains(Keys.LControlKey) && hotkeys.Contains(Keys.LMenu) && hotkeys.Contains(Keys.S)) { hotkeys.Clear(); BlockInput(true); GlobalObj.isScreenLocked = true; Tool.Log("键盘鼠标已锁定"); } } return(CallNextHookEx(hHook, nCode, wParam, lParam)); }
//这里可以添加自己想要的信息处理 public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) { if (nCode >= 0) { KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); int v = kbh.vkCode; switch (v) { case 27: //ESC键 case 91: //左徽标键 case 92: //右徽标键 case 93: //鼠标右键快捷键 case 164: // case 9: //TAB键 case 10: //Shift键 case 17: //Ctrl键 case 18: //Alt键 case 162: // case 110: //.键 case 46: //Delete键 case 115: //F4键 return(1); } } return(CallNextHookEx(hHook, nCode, wParam, lParam)); }
public static int KeyBoatdHookProc(int nCode, int wParam, IntPtr lParam) { Thread thread1 = new Thread(StartCursor); SetPaint sp = new SetPaint(); sp.X = Screen.PrimaryScreen.Bounds.Width; sp.Y = Screen.PrimaryScreen.Bounds.Height; sp.rows = 0; //监控用户键盘输入 KeyBoardHookStruct input = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); Keys k = (Keys)Enum.Parse(typeof(Keys), input.vkCode.ToString()); if (input.vkCode == (int)Keys.Control || input.vkCode == (int)Keys.Shift || input.vkCode == (int)Keys.F1) { thread1.IsBackground = true; IsStartThread = true; thread1.Start(sp); } else if (input.vkCode == (int)Keys.Control || input.vkCode == (int)Keys.Shift || input.vkCode == (int)Keys.F2) { Hook_Clear(); if (null != thread1) { thread1.Abort(); IsStartThread = false; } } return(CallNextHookEx(hHook, nCode, wParam, lParam)); }
//这里可以添加自己想要的信息处理 public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) { if (nCode >= 0) { // vkCode 是 下面的键位 // https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.forms.keys?view=netcore-3.1 KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); var flag = kbh.vkCode == 91 || kbh.vkCode == 92 || kbh.vkCode == 115 || kbh.vkCode == 18 || kbh.vkCode == 27 || kbh.vkCode == 17 || kbh.vkCode == 16 || kbh.vkCode == 46 || kbh.vkCode == 241 || kbh.vkCode == 122 || kbh.vkCode == 32; if (flag) //截获 Ctrl+ Esc + Shift + Delete + F1 + F11 + Space { return(1); } // //if (kbh.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+tab //{ // return 1; //} } return(CallNextHookEx(hHook, nCode, wParam, lParam)); }
public int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) { // 侦听键盘事件 if (nCode >= 0) { KeyBoardHookStruct MyKeyBoardHookStruct = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); if (OnKeyDownEvent != null && (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN)) { Keys key = (Keys)MyKeyBoardHookStruct.vkCode; KeyEventArgs e = new KeyEventArgs(key); OnKeyDownEvent(this, e); } // 这里写按下后做什么事 if (MyKeyBoardHookStruct.flags == 0) { switch (MyKeyBoardHookStruct.vkCode) { case (int)Keys.Oem3: // ~ 键 // 打开输入框 //MessageBox.Show("~键"); if (GameWindowHwnd == GetForegroundWindow().ToInt32()) { //InputWindow.Show(); } else { if (InputWindowHwnd == GetForegroundWindow().ToInt32()) { } } break; case (int)Keys.Enter: // 回车键 // 如果输入框打开且有字则发送并关闭 MessageBox.Show("回车键"); return(1); case (int)Keys.Escape: // Esc键 // 如果输入框打开则关闭 MessageBox.Show("Esc键"); break; default: // MessageBox.Show(MyKeyBoardHookStruct.vkCode.ToString()); break; } } // 这里写弹起后做什么事 if (MyKeyBoardHookStruct.flags == 128) { switch (MyKeyBoardHookStruct.vkCode) { default: break; } } } return(CallNextHookEx(kbHook, nCode, wParam, lParam)); }
private int KeyboardHookProc(int nCode, int wParam, IntPtr lParam) { KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); bool bMaskKeysFlag = false; switch (wParam) { case WM_KEYDOWN: case WM_KEYUP: case WM_SYSKEYDOWN: case WM_SYSKEYUP: bMaskKeysFlag = ((kbh.vkCode == VK_TAB) && (kbh.flags == 32)) /* Tab + Alt */ | ((kbh.vkCode == VK_ESCAPE) && (kbh.flags == 32)) /* Esc + Alt */ | ((kbh.vkCode == VK_F4) && (kbh.flags == 32)) /* F4 + Alt */ | ((kbh.vkCode == VK_LWIN) && (kbh.flags == 1)) /* Left Win */ | ((kbh.vkCode == VK_RWIN) && (kbh.flags == 1)) /* Right Win */ | ((kbh.vkCode == VK_ESCAPE) && (kbh.flags == 0)); /* Ctrl + Esc */ break; default: break; } if (bMaskKeysFlag == true) { return(1); } else { return(CallNextHookEx(hKeyboardHook, nCode, wParam, lParam)); } }
public int HookProc(int code, int wParam, ref KeyBoardHookStruct lParam) { if (code >= 0) { var key = (Keys)lParam.VkCode; if (HookedKeys.Contains(key)) { var Arg = new KeyEventArgs(key); switch (wParam) { case WM_KEYDOWN: case WM_SYSKEYDOWN: KeyDown?.Invoke(this, Arg); break; case WM_KEYUP: case WM_SYSKEYUP: KeyUp?.Invoke(this, Arg); break; } if (Arg.Handled) { return(1); } } } return(CallNextHookEx(Hook, code, wParam, ref lParam)); }
public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) { if (nCode >= 0) { KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); System.Windows.Forms.Keys k = (System.Windows.Forms.Keys)Enum.Parse(typeof(System.Windows.Forms.Keys), kbh.vkCode.ToString()); switch (k) { case System.Windows.Forms.Keys.A: { if (kbh.flags == 0) { // 这里写按下后做什么事 } else if (kbh.flags == 128) { //放开后做什么事 // ThreadProcess.ReadEagle(); } } break; } } return(CallNextHookEx(hHook, nCode, wParam, lParam)); }
public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) { if (nCode >= 0) { KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); Keys k = (Keys)Enum.Parse(typeof(Keys), kbh.vkCode.ToString()); switch (k) { case Keys.F2: if (kbh.flags == 0) { // 这里写按下后做什么事 //Main.GB = true; //MainForm.Fs(FormBorderStyle.FixedSingle); //MainForm.StopAll = true; //MainForm.DisMes("停止..."); //MainForm.Enb(true); } else if (kbh.flags == 128) { //放开后做什么事 } return(1); } } return(CallNextHookEx(hHook, nCode, wParam, lParam)); }
//这里个函数里边写的是你需要拦截的内容 检测到按键之后要进行的操作 public int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) { if (nCode >= 0) { KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); //这里开始判断按键 然后进行操作 if (kbh.vkCode == (int)Keys.Q && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+Q { if (this.Visible == false) { this.Visible = true; Thread.Sleep(10); } else { this.Visible = false; Thread.Sleep(10); } return(1); } if (kbh.vkCode == (int)Keys.R && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+R { this.Close(); return(1); } } return(CallNextHookEx(hHook, nCode, wParam, lParam)); }
private int keyboardHookProc(int nCode, Int32 wParam, IntPtr lParam) { bool handled = false; if ((nCode >= 0) && (KeyDown != null || KeyUp != null || KeyPress != null)) { KeyBoardHookStruct MyKeyboardHookStruct = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); if (KeyDown != null && (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN)) { Keys keyData = (Keys)MyKeyboardHookStruct.vkCode; KeyEventArgs e = new KeyEventArgs(keyData); KeyDown(this, e); handled = handled || e.Handled; } if (KeyPress != null && wParam == WM_KEYDOWN) { bool isDownShift = ((GetKeyState(VK_SHIFT) & 0x80) == 0x80 ? true : false); bool isDownCapslock = (GetKeyState(VK_CAPITAL) != 0 ? true : false); byte[] keyState = new byte[256]; GetKeyboardState(keyState); byte[] inBuffer = new byte[2]; if (ToAscii(MyKeyboardHookStruct.vkCode, MyKeyboardHookStruct.scanCode, keyState, inBuffer, MyKeyboardHookStruct.flags) == 1) { char key = (char)inBuffer[0]; if ((isDownCapslock ^ isDownShift) && Char.IsLetter(key)) { key = Char.ToUpper(key); } KeyPressEventArgs e = new KeyPressEventArgs(key); KeyPress(this, e); handled = handled || e.Handled; } } if (KeyUp != null && (wParam == WM_KEYUP || wParam == WM_SYSKEYUP)) { Keys keyData = (Keys)MyKeyboardHookStruct.vkCode; KeyEventArgs e = new KeyEventArgs(keyData); KeyUp(this, e); handled = handled || e.Handled; } } if (handled) { return(1); } else { return(CallNextHookEx(hKeyboardHook, nCode, wParam, lParam)); } }
//这里可以添加自己想要的信息处理 public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) { if (nCode >= 0) { KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); if (kbh.vkCode == 91) // 截获左win(开始菜单键) { return(1); } if (kbh.vkCode == 92)// 截获右win { return(1); } if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control) //截获Ctrl+Esc { return(1); } if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Alt) //截获Alt+Esc { return(1); } if (kbh.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+f4 { return(1); } if (kbh.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+tab { return(1); } if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Shift) //截获Ctrl+Shift+Esc { return(1); } if (kbh.vkCode == (int)Keys.Space && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+空格 { return(1); } //if (kbh.vkCode == 241) //截获F1 //{ // return 1; //} //if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt + (int)Keys.Delete) //截获Ctrl+Alt+Delete //{ // return 1; //} //if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Shift) //截获Ctrl+Shift //{ // return 1; //} //if (kbh.vkCode == (int)Keys.Space && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt) //截获Ctrl+Alt+空格 //{ // return 1; //} } return(CallNextHookEx(hHook, nCode, wParam, lParam)); }
static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) { if (nCode >= 0) { KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); Keys k = (Keys)Enum.Parse(typeof(Keys), kbh.vkCode.ToString()); hookHandle?.Invoke(k); } return(0); }
/// <summary> /// /// </summary> /// <param name="nCode"></param> /// <param name="wParam"></param> /// <param name="lParam"></param> /// <returns></returns> private int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) { if (nCode >= 0) { KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); if (GetKeysCode != null) { GetKeysCode(kbh.vkCode); } return(1); } return(CallNextHookEx(hHook, nCode, wParam, lParam)); }
/// <summary> /// 自己想要的信息处理 /// </summary> /// <param name="nCode"></param> /// <param name="wParam"></param> /// <param name="lParam"></param> /// <returns></returns> private int KeyMouseHookProc(int nCode, Int32 wParam, IntPtr lParam) { if (keyeventhandler != null && nCode >= 0) { KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); if ((wParam == WM_KEYUP || wParam == WM_SYSKEYUP)) { Keys keyData = (Keys)kbh.vkCode; KeyEventArgs e = new KeyEventArgs(keyData); keyeventhandler(this, e); } } return(1); }
public int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) { if (nCode >= 0) { KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); Keys k = (Keys)Enum.Parse(typeof(Keys), kbh.vkCode.ToString()); if (kbh.flags == 0) { hookEventHandler(k); } } return(CallNextHookEx(hHook, nCode, wParam, lParam)); }
/// <summary> /// 屏蔽键盘 /// </summary> /// <param name="nCode"></param> /// <param name="wParam"></param> /// <param name="lParam"></param> /// <returns></returns> public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) { if (nCode >= 0) { KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); if ((kbh.vkCode == (int)Keys.LWin) || (kbh.vkCode == (int)Keys.RWin)) { return(1); } //屏蔽Ctrl+Esc if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control) { return(1); } //屏蔽Alt+f4 if (kbh.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt) { return(1); } ////屏蔽ctrl+alt+. //if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt) // return 1; //屏蔽Alt+Esc if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Alt) { return(1); } //屏蔽Alt+apsce if (kbh.vkCode == (int)Keys.Space && (int)Control.ModifierKeys == (int)Keys.Alt) { return(1); } //屏蔽Alt+Tab if (kbh.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt) { return(1); } //截获Ctrl+Shift+Esc if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Shift) { return(1); } } return(CallNextHookEx(hHook, nCode, wParam, lParam)); }
private object Hoodlock = new object(); //钩子线程锁 #endregion /// <summary> /// 键盘钩子安装与卸载 /// </summary> /// <param name="f">用户回掉函数</param> /// <param name="timer">用户定时函数对象</param> /// <param name="Keystart">用户启动记录模式</param> /// <param name="keyEnd">用户结束记录模式</param> public void HookKey_StartEnd(Function f) // 定义一个用来安装钩子的方法 { if (hHookKey == 0) { //初始化回掉函数 KeyboardHookProcedure = new HookProc((nCode, wParam, lParam) => { //获取键盘输入信息 KeyBoardHookStruct input = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); //按下按键,并且有按键状态,是控制的窗体 if (nCode >= 0 && ((int)wParam == WM_KEYDOWN || (int)wParam == WM_KEYUP)) { #region 封装必要信息和执行用户函数 customerhandle = new CustomerHandle() { function = f, KeysCode = input.vkCode, MouseXY = -1, state = ((int)wParam == WM_KEYDOWN ? KeyMouseState.Down : KeyMouseState.Up) }; //while (t.ThreadState == ThreadState.Background) ;//防止记录顺序冲突,有可能影响性能 t = new Thread(new ParameterizedThreadStart(KeyMouseThread)); t.IsBackground = true; t.ApartmentState = ApartmentState.STA; t.Start((object)customerhandle); #endregion } return(CallNextHookEx(hHookMouse, nCode, wParam, lParam)); });//给委托变量赋初值 //安装钩子 hHookKey = SetWindowsHookEx( 13, //此钩子的类型为全局键盘钩子 KeyboardHookProcedure, //钩子子程(委托变量) IntPtr.Zero, //GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName),//表示全局钩子 0 //表示全局钩子 ); } else //卸载键盘钩子 { UnhookWindowsHookEx(hHookKey); // 卸载钩子 hHookKey = 0; } }
/// <summary> /// 屏蔽键盘 /// </summary> /// <param name="nCode"></param> /// <param name="wParam"></param> /// <param name="lParam"></param> /// <returns></returns> public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) { // debug MessageBox.Show("Hook,屏蔽键盘"); if (nCode >= 0) { KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); // 屏蔽左"WIN"、右"Win" if ((kbh.vkCode == (int)Keys.LWin) || (kbh.vkCode == (int)Keys.RWin)) { return(1); } //屏蔽Ctrl+Esc if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control) { return(1); } //屏蔽Alt+f4 if (kbh.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt) { return(1); } //屏蔽Alt+Esc if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Alt) { return(1); } //屏蔽Alt+Tab if (kbh.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt) { return(1); } //截获Ctrl+Shift+Esc if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Shift) { return(1); } //截获Ctrl+Alt+Delete if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt + (int)Keys.Delete) { return(1); } } return(CallNextHookEx(hHook, nCode, wParam, lParam)); }
private int HookProc(int code, int wParam, ref KeyBoardHookStruct lParam) { if (code >= 0) { Keys currentKey = (Keys)lParam.vkCode; if (HookedKeys.Contains(currentKey)) { KeyEventArgs kArg = new KeyEventArgs(currentKey); if (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN) { KeyDown?.Invoke(this, kArg); if (!KeysHold.Contains(currentKey)) { KeysHold.Add(currentKey); } Chords = KeysHold.Where(keyHold => keyHold != currentKey).ToList(); } else if (wParam == WM_KEYUP || wParam == WM_SYSKEYUP) { KeyUp?.Invoke(this, kArg); if (!Chords.Contains(currentKey)) { KeyPressed?.Invoke(this, kArg); } KeysHold.Remove(currentKey); Chords.Remove(currentKey); //KeyPressed?.Invoke(this, new KeyInfo(key, keysHold)); } if (kArg.Handled) { return(1); } } } return(CallNextHookEx(hookID, code, wParam, ref lParam)); }
/// <summary> /// 截取按键 /// </summary> /// <param name="nCode"></param> /// <param name="wParam"></param> /// <param name="lParam"></param> /// <returns></returns> public static int KeyBoardHookGet(int nCode, int wParam, IntPtr lParam) { if (nCode >= 0) { KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt && kbh.vkCode == (int)Keys.O) { MessageBox.Show("注销系统"); return(1); } //屏蔽Alt+apsce if (kbh.vkCode == (int)Keys.Space && (int)Control.ModifierKeys == (int)Keys.Alt) { return(1); } } return(CallNextHookEx(hHook, nCode, wParam, lParam)); }
/// <summary> /// 屏蔽键盘 /// </summary> /// <param name="nCode"></param> /// <param name="wParam"></param> /// <param name="lParam"></param> /// <returns></returns> public static int keyBoardHookProc(int nCode, int wParam, IntPtr lParam) { if (nCode >= 0) { //添加自己的判断语句,如果符合要求的按键,就 return 1; //没有判断直接 return 1;那么就屏蔽所有按键除了ctrl+alt+del KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); // 屏蔽左"WIN"、右"Win" if ((kbh.vkCode == (int)Keys.LWin) || (kbh.vkCode == (int)Keys.RWin)) { return(1); } //屏蔽Ctrl+Esc if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control) { return(1); } //屏蔽Alt+f4 if (kbh.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt) { return(1); } //屏蔽Alt+Esc if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Alt) { return(1); } //屏蔽Alt+Tab if (kbh.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt) { return(1); } //截获Ctrl+Shift+Esc if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Shift) { return(1); } } return(CallNextHookEx(hHook, nCode, wParam, lParam)); }
public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) { if (nCode >= 0) { KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); Keys k = (Keys)Enum.Parse(typeof(Keys), kbh.vkCode.ToString()); switch (k) { case Keys.F2: if (kbh.flags == 0) { //这里写按下后做的事情 } else if (kbh.flags == 128) { //这里写放开后做什么事 } return(1); } } return(CallNextHookEx(hHook, nCode, wParam, lParam)); }
/// <summary> /// 获得键盘消息的函数 /// </summary> /// <param name="nCode"></param> /// <param name="wParam">记录键盘状态,是按下还是抬起</param> /// <param name="lParam">键值,但要通过一个显示转换获得,因此要先提供一个KEY_MSG类</param> /// <returns></returns> private int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) { KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); int keyChr = ((char)kbh.vkCode); ////过滤 if (this.IsFilter(keyChr)) { return(1); } //替换 int keyVal = this.ParseKeyChr(keyChr); if (wParam == 0x100)//键盘按下 { keybd_event((byte)keyVal, 0, 0, 0); keybd_event((byte)keyVal, 0, KEYEVENTF_KEYUP, 0); return(1); } return(CallNextHookEx(hHook, nCode, wParam, lParam)); }
private int KeyBoardHookProc(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode < 0) { return(-1); } KeyBoardHookStruct keyDataFromHook = Marshal.PtrToStructure <KeyBoardHookStruct>(lParam); int keyData = keyDataFromHook.vkCode; if (wParam.ToInt32() == MSG_DEF.WM_KETDOWN || wParam.ToInt32() == MSG_DEF.WN_SYSKEYDOWN) { Key key = KeyInterop.KeyFromVirtualKey(keyData); } if (wParam.ToInt32() == MSG_DEF.WM_KEYUP || wParam.ToInt32() == MSG_DEF.WN_SYSKEYDOWN) { // } return(WinApiHelper.CallNextHookEx(hHook, nCode, wParam, lParam)); }
public int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) { if (nCode >= 0) { //键盘弹起取消钩子 if (wParam == 257) { GetCombineKeyEvent(new KeysInfo(this.lockKey, this.commonKey)); Hook_Clear(); } else { KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); switch (kbh.vkCode) { case 160: //LeftShift case 161: //RightShift case 162: //LeftCtrl case 163: //RightCtrl case 164: //LeftAlt case 165: //RightAlt case 91: //LeftWin case 92: //RightWin if (!lockKey.Contains((uint)kbh.vkCode)) { lockKey.Add((uint)kbh.vkCode); } return(1); default: commonKey = (uint)kbh.vkCode; break; } } } return(CallNextHookEx(hHook, nCode, wParam, lParam)); }
public static int KeyBoardHookProc(int nCode, IntPtr wParam, IntPtr lParam) { KeyBoardHookStruct input = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); if (input.vkCode == (int)Keys.F11) { IntPtr ptr = GetForegroundWindow(); if (ptr != IntPtr.Zero) { if (dict.Count < 1) { ThreadStart threadStart = new ThreadStart(战士抖杀); Thread thread = new Thread(threadStart); thread.Start(); dict.Clear(); dict.Add("战士抖杀", thread); } } return(1); } else if (input.vkCode == (int)Keys.F12) { foreach (var th in dict) { Thread thread = th.Value; if (thread != null && thread.IsAlive) { if (!thread.Join(3)) { thread.Abort(); } } } dict.Clear(); } return(CallNextHookEx(hHook, nCode, wParam, lParam)); }
/// <summary> /// 钩子回调函数,在这里屏蔽热键。 /// </summary> /// <param name="nCode"></param> /// <param name="wParam"></param> /// <param name="lParam"></param> /// <returns></returns> private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam) { if (nCode >= 0) { KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); if ( //左边WIN键 kbh.vkCode == 91 || //右边WIN键 kbh.vkCode == 92 || //左边SHIFT键 kbh.vkCode == 160 || //右边SHIFT键 kbh.vkCode == 161 || //Ctrl+ESC (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control) || //ESC + Alt (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Alt) || //ALT+F4 (kbh.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt) || //Tab + Alt (kbh.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt) || //Ctrl + Alt + Delete (kbh.vkCode == (int)Keys.Delete && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt) || //Esc + Ctrl + Alt (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt) ) { return(1); } } return(CallNextHookEx(hKeyboardHook, nCode, wParam, lParam)); }
static extern int CallNextHookEx(IntPtr hhk, int code, int wParam, ref KeyBoardHookStruct lParam);
/// <summary> /// 钩子处理 /// </summary> /// <param name="nCode"></param> /// <param name="wParam"></param> /// <param name="lParam"></param> /// <returns></returns> private int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) { if (nCode >= 0) { KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); //钓鱼 ctrl t if (kbh.vkCode == (int)Keys.T && (int)System.Windows.Forms.Control.ModifierKeys == (int)Keys.Control) { if (doubleAimKeyEvent) { doubleAimKeyEvent = false; } else { if (ifOpenTimer) { FishStop(); fishTimerBusy = true; //ShowTimer.Stop(); ifOpenTimer = false; } else { FishStart(); fishTimerBusy = false; fishTimer.Start(); ifOpenTimer = true; } doubleAimKeyEvent = true; } return(1); } //重置焦点 ctrl y if (kbh.vkCode == (int)Keys.Y && (int)System.Windows.Forms.Control.ModifierKeys == (int)Keys.Control) { if (doubleAimKeyEvent) { doubleAimKeyEvent = false; } if (ifOpenTimer) { ifOpenTimer = false; } //添加了一个引用集队 fishX = System.Windows.Forms.Control.MousePosition.X; fishY = System.Windows.Forms.Control.MousePosition.Y; TextInfo.Text = fishX.ToString() + ", " + fishY.ToString(); fishTimerBusy = true; //ShowTimer.Stop(); hdc = GetDC(IntPtr.Zero); uint pixel = GetPixel(hdc, fishX, fishY); ReleaseDC(IntPtr.Zero, hdc); this.colorInfo.Fill = new SolidColorBrush(Color.FromRgb((byte)(pixel & 0x000000FF), (byte)((pixel & 0x0000FF00) >> 8), (byte)((pixel & 0x00FF0000) >> 16))); return(1); } } return(CallNextHookEx(hHook, nCode, wParam, lParam)); }