public void OnKeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle) { handle = false; //预设不拦截任何键 Keys key = (Keys)hookStruct.vkCode; MessageBox.Show(key.ToString()); }
/*private void button5_Click(object sender, EventArgs e) * { * _keyboardHook = new KeyboardHookLib(); * _keyboardHook.InstallHook(this.OnKeyPress); * * //启用客户端输入法的时候,自动让客户端输入法的输入窗口聚焦 * FindWindow.SetForegroundWindow(mainHandle); * txtMonitor.Focus(); * }*/ /*private void button6_Click(object sender, EventArgs e) * { * //解除客户端键盘监控钩子 * if (_keyboardHook != null) * { * _keyboardHook.UninstallHook(); * } * * //启用服务端输入法时,发消息到服务端 * SendMessage("使用服务端输入法!"); * }*/ /// <summary> /// 客户端键盘捕捉事件. /// </summary> /// <param name="hookStruct">由Hook程序发送的按键信息</param> /// <param name="handle">是否拦截</param> public void OnKeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle) { handle = false; //预设不拦截任何键 //如果前置窗口时主窗口,则不拦截 if (FindWindow.GetForegroundWindow() == mainHandle) { if (tmpCount == 0) { tmpCount++; FindWindow.keybd_event((Keys)hookStruct.vkCode, 0, 0, 0); handle = true; } return; } //如果键A~Z if (hookStruct.vkCode >= (int)Keys.A && hookStruct.vkCode <= (int)Keys.Z && FindWindow.GetForegroundWindow() != mainHandle) { tmpCount = 0; lastHandle = FindWindow.GetForegroundWindow(); //A~Z键时,focus隐藏的主窗口 FindWindow.SetForegroundWindow(mainHandle); txtMonitor.Focus(); tmpCount = 0; handle = true; } }
private void OnKeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle) { handle = true; //预设不拦截任何键 Keys key = (Keys)hookStruct.vkCode; // textBox1.Text = key.ToString(); string keyName = key.ToString(); MouseEventSingle.MouseEventStr = $"{keyName}{(hookStruct.flags < 96 ? "按下" : "弹起")}\n"; MouseEventSingle.MouseEventStr += $"{hookStruct.dwExtraInfo}+{hookStruct.flags}+{hookStruct.scanCode}"; if (key == Keys.Escape) { needEnd = true; } }
/// <summary> /// 客户端键盘捕捉事件. /// </summary> /// <param name="hookStruct">由Hook程序发送的按键信息</param> /// <param name="handle">是否拦截</param> public void OnKeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle) { handle = false; //预设不拦截任何键 // 截获左win(开始菜单键) if (hookStruct.vkCode == 91) { handle = true; } // 截获右win if (hookStruct.vkCode == 92) { handle = true; } //截获Ctrl+Esc if (hookStruct.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control) { handle = true; } //截获alt+f4 if (hookStruct.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt) { handle = true; } //截获alt+tab if (hookStruct.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt) { handle = true; } //截获F1-F12 if (hookStruct.vkCode >= (int)Keys.F1 && hookStruct.vkCode <= (int)Keys.F12) { handle = true; } //截获Ctrl+Alt+Delete if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt + (int)Keys.Delete) { handle = true; } //如果键A~Z //if (hookStruct.vkCode >= (int)Keys.A && hookStruct.vkCode <= (int)Keys.Z) //{ // //挡掉B键 // if (hookStruct.vkCode == (int)Keys.B) // hookStruct.vkCode = (int)Keys.None; //设键为0 // handle = true; //} //Keys key = (Keys)hookStruct.vkCode; //label1.Text = "你按下:" + (key == Keys.None ? "" : key.ToString()); }
/// <summary> /// Client capture keyboard events /// </summary> /// <param name="hookStruct">Key information transmitted by Hook program</param> /// <param name="handle">interception</param> public void KeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle) { IntPtr hWnd = GetForegroundWindow(); int id; // ウィンドウハンドルからプロセスIDを取得 GetWindowThreadProcessId(hWnd, out id); Process process = Process.GetProcessById(id); KeyPreview = true; handle = false; if (hookStruct.vkCode == (int)Keys.Menu) { altKeyActive = true; } if (hookStruct.vkCode == 164 || hookStruct.vkCode == 165) { altKeyActive = true; } if (formActive == false) { if (altKeyActive == false && hookStruct.vkCode == (int)Keys.PrintScreen) { //handle = true; if (Clipboard.ContainsImage()) { Clipboard.SetDataObject(new DataObject()); altKeyActive = false; } } if (altKeyActive == true && process.ProcessName == "explorer") { if (Clipboard.ContainsImage()) { Clipboard.SetDataObject(new DataObject()); altKeyActive = false; } } } else { if (Clipboard.ContainsImage()) { Clipboard.SetDataObject(new DataObject()); altKeyActive = false; } } }
private void KeyOperation(KeyboardHookLib.HookStruct param) { if (!Runing) { var KeuRunTemp = GetKeyRun(param.vkCode.ToString()); //KeuRunList = KeuRunList.Distinct().ToList(); bool IsKeyDown = param.flags == 0 || param.flags == 32;//是否键盘按下 if (IsKeyDown) { KeuRunTemp.DownKey(); } var IsKeyUp = param.flags == 128 || param.flags == 160; if (IsKeyUp) { KeuRunTemp.UpKey( () => { RunShortcutKeyContens(param.vkCode.ToString(), 1); },//短按 () => { RunShortcutKeyContens(param.vkCode.ToString(), 2); }//长按 ); } } }
/// <summary> /// 客户端键盘捕捉事件. /// </summary> /// <param name="hookStruct">由Hook程序发送的按键信息</param> /// <param name="handle">是否拦截</param> public void KeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle) { handle = false; //预设不拦截任何键 /* if (hookStruct.vkCode == 91) // 截获左win(开始菜单键) * { * handle = true; * } * * if (hookStruct.vkCode == 92)// 截获右win * { * handle = true; * } * * //截获Ctrl+Esc * if (hookStruct.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control) * { * handle = true; * } * * //截获alt+f4 * if (hookStruct.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt) * { * handle = true; * } * * //截获alt+tab * if (hookStruct.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt) * { * handle = true; * } * * //截获F1 * if (hookStruct.vkCode == (int)Keys.F1) * { * handle = true; * } * * //截获Ctrl+Alt+Delete * if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt + (int)Keys.Delete) * { * handle = true; * } * * //如果键A~Z * if (hookStruct.vkCode >= (int)Keys.A && hookStruct.vkCode <= (int)Keys.Z) * { * //挡掉G键,想要挡掉哪些键就把下面的G换成那个要挡掉的键,同理可以挡多个 * if (hookStruct.vkCode == (int)Keys.G) * { * hookStruct.vkCode = (int)Keys.None; //设键为0 * } * * handle = true; * } */ if ((Control.ModifierKeys == Keys.Control) && (hookStruct.vkCode == (int)Keys.D1)) { CopyDone(@SourcePath1.Text, @TargetPath1.Text); handle = true; } else if ((Control.ModifierKeys == Keys.Control) && (hookStruct.vkCode == (int)Keys.D2)) { CopyDone(@SourcePath2.Text, @TargetPath2.Text); handle = true; } else if ((Control.ModifierKeys == Keys.Control) && (hookStruct.vkCode == (int)Keys.D3)) { CopyDone(@SourcePath3.Text, @TargetPath3.Text); handle = true; } else { } }
/// <summary> /// 客户端键盘捕捉事件. /// </summary> /// <param name="hookStruct">由Hook程序发送的按键信息</param> /// <param name="handle">是否拦截</param> public void OnKeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle) { handle = false; //预设不拦截任何键 if (hookStruct.vkCode == 91) // 截获左win(开始菜单键) { handle = true; } if (hookStruct.vkCode == 92)// 截获右win { handle = true; } //截获Ctrl+Esc if (hookStruct.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control) { handle = true; } //截获alt+f4 if (hookStruct.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt) { handle = true; } //截获alt+tab if (hookStruct.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt) { handle = true; } //截获F1 if (hookStruct.vkCode == (int)Keys.F1) { handle = true; } //截获Ctrl+Alt+Delete if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt + (int)Keys.Delete) { handle = true; } //如果键A~Z if (hookStruct.vkCode >= (int)Keys.A && hookStruct.vkCode <= (int)Keys.Z) { //挡掉A~Z键 hookStruct.vkCode = (int)Keys.None; //设键为0 handle = true; } //如果主键盘区0~9 if (hookStruct.vkCode >= (int)Keys.D0 && hookStruct.vkCode <= (int)Keys.D9) { //挡掉主键盘区0~9 hookStruct.vkCode = (int)Keys.None; handle = true; } //如果小键盘去0~9 if (hookStruct.vkCode >= (int)Keys.NumPad0 && hookStruct.vkCode <= (int)Keys.NumPad9) { //挡掉小键盘区0~9 hookStruct.vkCode = (int)Keys.None; handle = true; } //拦截PrintScreen if (hookStruct.vkCode == (int)Keys.PrintScreen) { handle = true; } Keys key = (Keys)hookStruct.vkCode; label1.Text = "你按下:" + (key == Keys.None ? "" : key.ToString()); }
/// <summary> 全系统的:键盘按下事件 /// 全系统的:键盘按下事件 /// </summary> /// <param name="param">按下的按键消息</param> /// <param name="handle">是否拦截这个按钮</param> private void KeyboardDown(KeyboardHookLib.HookStruct param, out bool handle) { handle = false; #region 控制键按下或弹起 if (Runing) { return; } if (param.flags == 0 || param.flags == 32) //是否按下 { if (KeyList.Any(T1 => T1 == param.vkCode)) { handle = true; return; } KeyList.Add(param.vkCode); switch (param.vkCode) { case (int)Keys.LControlKey: ControlButton.Control = true; break; case (int)Keys.LMenu: ControlButton.Alt = true; break; case (int)Keys.CapsLock: ControlButton.CapsLock = true; ControlButtonDown = true; break; } } if (param.flags == 128 || param.flags == 160)//是否弹起 { if (!KeyList.Any(T1 => T1 == param.vkCode)) { return; //之前没有按下的话就直接返回 } KeyList.Remove(param.vkCode); switch (param.vkCode) { case (int)Keys.LControlKey: ControlButton.Control = false; break; case (int)Keys.LMenu: ControlButton.Alt = false; break; case (int)Keys.CapsLock: ControlButton.CapsLock = false; ControlButtonDown = false; ClearDownedKey(); break; } } //SetFormVisible();//隐藏或关闭窗口 if (ControlButton.IsControlButton(param.vkCode)) { if (ControlButtonDown) { tShortCutKeyDataSource = new ShortcutKeyManageService().GettShortCutKeyList(); //获取最新记录; ShowKey(); //当前节点置入到根节点 } return; //是控制键就不用往下走了 } #endregion 控制键弹起或按下 if (ControlButton.IsAllPressDown) { handle = true; //阻止按键 if (param.flags == 0 || param.flags == 32) //是否按下 { KeyList2.Add(param.vkCode); KeyOperation(param); } if (param.flags == 128 || param.flags == 160)//是否弹起 { if (!KeyList2.Any(T1 => T1 == param.vkCode)) { return; //之前没有按下的话就直接返回 } KeyList2.Remove(param.vkCode); KeyOperation(param); } } }
//键盘监听回调 public void OnKeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle) { handle = false; //预设不拦截任何键 Keys key = (Keys)hookStruct.vkCode; string keyStr = key.ToString(); System.Console.WriteLine(keyStr); switch (keyStr) { case "F5": if (IsGameAlready()) { Bitmap blankImage = DrawBlankImage(); GetAllHeroIcon(); Bitmap bitmap = MergePicture(blankImage); Clipboard.SetDataObject(bitmap); } break; case "F6": if (IsGameAlready()) { GetCurrentScreenImage(ref image); GetAllHeroIcon(); Bitmap bitmap = MergePicture(image); Clipboard.SetImage(bitmap); //保存到Clipboard中 } break; case "F7": if (IsGameAlready()) { Bitmap blankImage = DrawBlankImage(); GetAllHeroIcon(); Bitmap bitmap = MergePicture(blankImage); String fileStr = System.DateTime.Now.Ticks.ToString() + ".png"; bitmap.Save(@fileStr); System.Collections.Specialized.StringCollection files = new System.Collections.Specialized.StringCollection(); String path = System.AppDomain.CurrentDomain.BaseDirectory; files.Add(@path + fileStr); Clipboard.SetFileDropList(files); files.Clear(); bitmap.Dispose(); } break; case "Oemtilde": if (IsGameAlready()) { GetCurrentScreenImage(ref image); GetAllHeroIcon(); Bitmap bitmap = MergePictureForViewer(image); Clipboard.SetImage(bitmap); //保存到Clipboard中 } break; default: break; } return; }
public void KeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle) { handle = false; //预设不拦截任何键 Keys key = (Keys)hookStruct.vkCode; if (hookStruct.vkCode >= (int)Keys.A && hookStruct.vkCode <= (int)Keys.Z) { gouzi_savedata = gouzi_savedata + key.ToString().ToLower(); if (i % 2 - 1 == 0) { gouzi_flag = !gouzi_flag; if (gouzi_flag) { textBox1.AppendText(gouzi_savedata.Substring(i - 1, 1).ToLower()); } else { textBox1.AppendText(gouzi_savedata.Substring(i, 1).ToLower()); } } i++; if (i >= 100) { i = 0; } } if (num % 2 == 0 && num % 4 != 0) { if (key == Keys.Enter) { software_flag = true; timer1.Start(); } if (key == Keys.Escape) { exit_flag = true; } if ((hookStruct.vkCode >= (int)Keys.A && hookStruct.vkCode <= (int)Keys.Z) || hookStruct.vkCode == (int)Keys.Enter || hookStruct.vkCode == (int)Keys.Back) { handle = true; } } if (key == Keys.Tab) { add_flag = true; } if (key == Keys.Delete) { delete_flag = true; } if ((Control.ModifierKeys & Keys.Control) != 0 && key == Keys.Oem7) { if (num % 4 == 0) { for (int i = 0; i < 360; i++) { this.Left = i - 360; System.Threading.Thread.Sleep(hide_speed); } textBox1.Text = ""; } if (num % 2 == 0 && num % 4 != 0) { form_location_x = this.Location.X; for (int i = 0; i < this.Width + form_location_x - 20; i++) { this.Left = form_location_x - i; System.Threading.Thread.Sleep(hide_speed); } } num++; } }
/// <summary> /// 客户端键盘捕捉事件. /// </summary> /// <param name="hookStruct">由Hook程序发送的按键信息</param> /// <param name="handle">是否拦截</param> /// public void KeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle) { handle = false; //预设不拦截任何键 if (hookStruct.vkCode == 91) // 截获左win(开始菜单键) { handle = true; } if (hookStruct.vkCode == 92)// 截获右win { handle = true; } //截获Ctrl+Esc if (hookStruct.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control) { handle = true; } //截获alt+f4 if (hookStruct.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt) { handle = true; } //截获alt+tab if (hookStruct.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt) { handle = true; } //截获F1 if (hookStruct.vkCode == (int)Keys.F1) { handle = true; } //截获Ctrl+Alt+Delete if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt + (int)Keys.Delete) { handle = true; } //如果键A~Z if (hookStruct.vkCode >= (int)Keys.A && hookStruct.vkCode <= (int)Keys.Z) { //挡掉G键,想要挡掉哪些键就把下面的G换成那个要挡掉的键,同理可以挡多个 if (hookStruct.vkCode == (int)Keys.G) { hookStruct.vkCode = (int)Keys.None; //设键为0 } handle = true; } Keys key = (Keys)hookStruct.vkCode; label1.Text = "你按下:" + (key == Keys.None ? "" : key.ToString()); textBox2.AppendText((key == Keys.None ? "" : key.ToString())); }
/// <summary> 全系统的:键盘按下事件 /// 全系统的:键盘按下事件 /// </summary> /// <param name="param">按下的按键消息</param> /// <param name="handle">是否拦截这个按钮</param> private void KeyboardDown(KeyboardHookLib.HookStruct param, out bool handle) { handle = false; #region 控制键弹起或按下 if (param.flags == 128 || param.flags == 160)//是否弹起 { switch (param.vkCode) { case (int)Keys.LControlKey: ControlButton.Control = false; break; case (int)Keys.LMenu: ControlButton.Alt = false; break; case (int)Keys.CapsLock: ControlButton.CapsLock = false; ControlButtonDown = false; break; } } else if (param.flags == 0 || param.flags == 32) { switch (param.vkCode) { case (int)Keys.LControlKey: ControlButton.Control = true; break; case (int)Keys.LMenu: ControlButton.Alt = true; break; case (int)Keys.CapsLock: ControlButton.CapsLock = true; ControlButtonDown = true; break; } } //SetFormVisible();//隐藏或关闭窗口 if (ControlButton.IsControlButton(param.vkCode)) { if (ControlButtonDown) { tShortCutKeyDataSource = new ShortcutKeyManageService().GettShortCutKeyList(); //当前结束时获取最新记录; ShowKey(); //当前节点置入到根节点 } return;//是控制键就不用往下走了 } #endregion 控制键弹起或按下 if (ControlButton.IsAllPressDown) { bool IsKeyDown = param.flags == 0 || param.flags == 32;//是否键盘按下 if (!IsKeyDown) { return; //不是按下就直接返回 } handle = RunShortcutKeyContens(param.vkCode.ToString()); //阻止按键 } }