private static IntPtr SetHook(LowLevelDeviceProc proc, int deviceName)
 {
     using (Process curProcess = Process.GetCurrentProcess())
         using (ProcessModule curModule = curProcess.MainModule)
         {
             return(SetWindowsHookExA(deviceName, proc,
                                      GetModuleHandle(curModule.ModuleName), 0));
         }
 }
 private static extern IntPtr SetWindowsHookExA(int idHook,
                                                LowLevelDeviceProc lpfn, IntPtr hMod, uint dwThreadId);