예제 #1
0
        protected override void OnStart()
        {
            _module   = NativeModule.Load(_moduleName);
            _callback = _module.GetProcedureAddress(_functionName);

            _hook = NativeMethods.SetWindowsHookEx(_hookType, _callback, _module, _threadId);
        }
예제 #2
0
        protected override void OnStart()
        {
            _hookProc   = new KeyboardLowLevelHookProc(HookProc);
            _hookHandle = NativeMethods.SetWindowsHookEx(_hookProc);

            if (_hookHandle.IsInvalid)
            {
                throw new Win32Exception();
            }

            _hookRoot = GCHandle.Alloc(this);
        }
예제 #3
0
        protected override void OnStop()
        {
            if (_hook != null)
            {
                _hook.Dispose();
                _hook = null;
            }

            if (_module != null)
            {
                _module.Dispose();
                _module = null;
            }
        }
예제 #4
0
        protected override void OnStop()
        {
            if (_hookHandle != null)
            {
                _hookHandle.Dispose();
            }

            if (_hookRoot.IsAllocated)
            {
                _hookRoot.Free();
            }

            _hookHandle = null;
        }
예제 #5
0
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (_hookHandle != null)
                {
                    _hookHandle.Dispose();
                }

                if (_hookRoot.IsAllocated)
                {
                    _hookRoot.Free();
                }
            }

            _hookHandle = null;
            base.Dispose(disposing);
        }