コード例 #1
0
ファイル: HookBase.cs プロジェクト: hummerd/AppManager
        protected void Install()
        {
            // make sure not already installed
            if (_HookHandle != IntPtr.Zero)
            {
                return;
            }

            var mod = ModuleHelper.GetCurrentModule();

            // install system-wide hook
            _HookHandle = HookAPI.SetWindowsHookEx(
                _HookType,
                _HookFunction,
                mod.BaseAddress,
                0);

            if (_HookHandle == IntPtr.Zero)
            {
                try
                {
                    EventLog.WriteEntry(
                        "HookApp",
                        string.Format("Failed to set hook. Error {0}.", Marshal.GetLastWin32Error()),
                        EventLogEntryType.Warning);
                }
                catch
                {; }
            }
        }
コード例 #2
0
ファイル: HookBase.cs プロジェクト: hummerd/AppManager
 protected void Uninstall()
 {
     if (_HookHandle != IntPtr.Zero)
     {
         // uninstall system-wide hook
         HookAPI.UnhookWindowsHookEx(_HookHandle);
         _HookHandle = IntPtr.Zero;
     }
 }
コード例 #3
0
ファイル: HookBase.cs プロジェクト: hummerd/AppManager
        // hook function called by system
        protected int HookCallback(int code, IntPtr wParam, IntPtr lParam)
        {
            if (code < 0)
            {
                return(HookAPI.CallNextHookEx(_HookHandle, code, wParam, lParam));
            }

            HookParam structData = (HookParam)Marshal.PtrToStructure(lParam, typeof(HookParam));

            if (ProcessHook(wParam, structData))
            {
                return(HookAPI.CallNextHookEx(_HookHandle, code, wParam, lParam));
            }

            return(-1);
        }