コード例 #1
0
 private static IntPtr SetHook(LowLevelProcDelegate callback, int hookType)
 {
     using (Process curProcess = Process.GetCurrentProcess())
         using (ProcessModule curModule = curProcess.MainModule)
         {
             var handle = GetModuleHandle(curModule.ModuleName);
             return(SetWindowsHookEx(hookType, callback, handle, 0));
         }
 }
コード例 #2
0
        public void Init()
        {
            if (m_Init)
            {
                return;
            }

            m_Init = true;
            new Thread(() =>
            {
                m_CachedLowLevelKeyboardProcDelegate = new LowLevelProcDelegate(LowLevelKeyboardProcCallback);
                m_CachedLowLevelMouseProcDelegate    = new LowLevelProcDelegate(LowLevelMouseProcCallback);

                m_KeyboardHook = SetHook(m_CachedLowLevelKeyboardProcDelegate, WH_KEYBOARD_LL);
                m_MouseHook    = SetHook(m_CachedLowLevelMouseProcDelegate, WH_MOUSE_LL);
                Application.Run(); // TODO: Find a better way to implement Application Message Loop.... LOL
            }).Start();
        }
コード例 #3
0
 private static extern IntPtr SetWindowsHookEx(int idHook, LowLevelProcDelegate lpfn, IntPtr hMod, uint dwThreadId);