IntPtr minecraftHWND = IntPtr.Zero; // Data.mcProcess is the same. private void Hook_OnHookKeyPressed(HookKeyPressArgs args) { if (minecraftHWND.Equals(IntPtr.Zero)) { minecraftHWND = staticMC.MainWindowHandle; } IntPtr fore = GetForegroundWindow(); if (Data.hud != null) { if (!minecraftHWND.Equals(fore) && !Data.hud.Handle.Equals(fore)) { return; } } else if (!minecraftHWND.Equals(fore)) { return; } bool ctrlDown = GetKeyDown(Keys.LControlKey) || GetKeyDown(Keys.RControlKey); if (!ctrlDown) { return; } foreach (Keybind kb in Data.keybinds.keybinds) { if (kb.key == args.pressed) { string text = kb.game.gameInternalName; if (Data.hud != null && text.Equals (KeybindManager.INTERN_GUI)) { Data.hud.ToggleVisible(); continue; } Thread.Sleep(50); SendKeys.SendWait("/"); Thread.Sleep(50); Clipboard.SetText(text); SendKeys.SendWait("v"); Thread.Sleep(50); SendKeys.SendWait("{ENTER}"); break; } } }
private IntPtr KeyboardHookCallback(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0 && wParam == (IntPtr)0x100) // WM_KEYDOWN { int vkCode = Marshal.ReadInt32(lParam); Keys key = (Keys)vkCode; HookKeyPressArgs args = new HookKeyPressArgs(key); OnHookKeyPressed?.Invoke(args); } return(CallNextHookEx(_keyboardHookID, nCode, wParam, lParam)); }