Крючок клавиатуры C# не работает
Это не работает.
Никакого сообщения об ошибке или чего-то еще, это просто не работает.
Кто-нибудь знает почему?
public class InterceptKeys { private const int WH_KEYBOARD_LL = 13; private const int WM_KEYDOWN = 0x0100; private static IntPtr _hookID = IntPtr.Zero; private static String keysHooked = String.Empty; public InterceptKeys(String holder) { // keysHooked = holder; Hook(); } public void Hook() { IntPtr hInstance = LoadLibrary("User32"); Console.WriteLine("hInstance: "+hInstance); _hookID = SetWindowsHookEx(WH_KEYBOARD_LL, HookCallback, hInstance, 0); Console.WriteLine("_hookID: "+_hookID); } public void Unhook() { UnhookWindowsHookEx(_hookID); } public delegate int HookProc(int code, int wParam, HookStruct lParam); public struct HookStruct { public int vkCode; public int scanCode; public int flags; public int time; public int dwExtraInfo; } public int HookCallback(int code, int wParam, HookStruct lParam) { if (code >= 0 && wParam == WM_KEYDOWN) { int vkCode = lParam.vkCode; Console.WriteLine((Keys)vkCode); } return CallNextHookEx(_hookID, code, wParam, lParam); } [DllImport("user32.dll")] static extern IntPtr SetWindowsHookEx(int idHook, HookProc callback, IntPtr hInstance, uint threadId); [DllImport("user32.dll")] static extern bool UnhookWindowsHookEx(IntPtr hInstance); [DllImport("user32.dll")] static extern int CallNextHookEx(IntPtr idHook, int nCode, int wParam, HookStruct lParam); [DllImport("kernel32.dll")] static extern IntPtr LoadLibrary(string lpFileName); }