public bool IsModuleLoaded() { Guid classGuid = Guid.Empty; if (ClassType != null) { classGuid = ClassType.GUID; } else { classGuid = ClassId; } Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey("CLSID\\{" + classGuid.ToString() + "}\\InprocServer32"); if (rk == null) { return(false); } string classdllname = rk.GetValue(null).ToString(); IntPtr libH = KERNEL32.GetModuleHandle(classdllname); if (libH == IntPtr.Zero) { return(false); } return(true); }
public static void HookKeyboard(HookProc proc) { using (Process curProcess = Process.GetCurrentProcess()) using (ProcessModule curModule = curProcess.MainModule) { var module = KERNEL32.GetModuleHandle(curModule.ModuleName); UnhookKeyboard(); HookProc hook = (int nCode, IntPtr wParam, IntPtr lParam) => { proc(nCode, wParam, lParam); return(USER32.CallNextHookEx(_hHook, nCode, wParam, lParam)); }; _hHook = USER32.SetWindowsHookEx(WH_KEYBOARD_LL, hook, module, 0); } }
/// <summary> /// Enables the hook /// </summary> /// <returns>True if hook is enabled</returns> public bool EnableHook() { if (this.mseHook != IntPtr.Zero) { return(true); } this.mseHook = USER32.SetWindowsHookEx(HookType.WH_MOUSE_LL, this.mseCallbackDelegate, KERNEL32.GetModuleHandle(System.Diagnostics.Process.GetCurrentProcess().MainModule.ModuleName), 0); return(this.mseHook != IntPtr.Zero); }