Изменить хук так чтобы он перехватывал нажатие клавиши - C#

Узнай цену своей работы

Формулировка задачи:

Есть код ловушки (не весь мой, поэтому и не знаю)
Листинг программы
  1. public class InterceptKeys
  2. {
  3. private const int WH_KEYBOARD_LL = 13;
  4. private const int WM_KEYDOWN = 0x0100;
  5. private static LowLevelKeyboardProc _proc = HookCallback;
  6. private static IntPtr _hookID = IntPtr.Zero;
  7. private static TextBox Log;
  8. public static void Start(TextBox log)
  9. {
  10. _hookID = SetHook(_proc);
  11. Log = log;
  12. }
  13. public static void Stop()
  14. {
  15. UnhookWindowsHookEx(_hookID);
  16. }
  17. private static IntPtr SetHook(LowLevelKeyboardProc proc)
  18. {
  19. using (Process curProcess = Process.GetCurrentProcess())
  20. using (ProcessModule curModule = curProcess.MainModule)
  21. {
  22. return SetWindowsHookEx(WH_KEYBOARD_LL, proc,
  23. GetModuleHandle(curModule.ModuleName), 0);
  24. }
  25. }
  26. private delegate IntPtr LowLevelKeyboardProc(
  27. int nCode, IntPtr wParam, IntPtr lParam);
  28. private static IntPtr HookCallback(
  29. int nCode, IntPtr wParam, IntPtr lParam)
  30. {
  31. if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
  32. {
  33. int vkCode = Marshal.ReadInt32(lParam);
  34. Log.Text = ((Keys)vkCode).ToString();
  35. }
  36. return CallNextHookEx(_hookID, nCode, wParam, lParam);
  37. }
  38. [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  39. private static extern IntPtr SetWindowsHookEx(int idHook,
  40. LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId);
  41. [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  42. [return: MarshalAs(UnmanagedType.Bool)]
  43. private static extern bool UnhookWindowsHookEx(IntPtr hhk);
  44. [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  45. private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode,
  46. IntPtr wParam, IntPtr lParam);
  47. [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  48. private static extern IntPtr GetModuleHandle(string lpModuleName);
  49. }
Надо, чтоб он видел и нажатие и отпускание клавиш. И изменял текст ТекстБокс Лог на например SpaceDown или SpaceUp. Ps Сейчас видит только отпускание, то есть полный KeyPressed

Решение задачи: «Изменить хук так чтобы он перехватывал нажатие клавиши»

textual
Листинг программы
  1. private const int WM_KEYUP = 0x0101;
  2.  
  3. ...
  4.  
  5. if (nCode >= 0 && (wParam == (IntPtr)WM_KEYDOWN || wParam == (IntPtr)WM_KEYUP))

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы