Quasar/Client/Core/MouseKeyHook/WinApi/HookProcedureHandle.cs

31 lines
861 B
C#

// This code is distributed under MIT license.
// Copyright (c) 2015 George Mamaladze
// See license.txt or http://opensource.org/licenses/mit-license.php
using System.Windows.Forms;
using Microsoft.Win32.SafeHandles;
namespace xClient.Core.MouseKeyHook.WinApi
{
internal class HookProcedureHandle : SafeHandleZeroOrMinusOneIsInvalid
{
private static bool _closing;
static HookProcedureHandle()
{
Application.ApplicationExit += (sender, e) => { _closing = true; };
}
public HookProcedureHandle()
: base(true)
{
}
protected override bool ReleaseHandle()
{
//NOTE Calling Unhook during processexit causes deley
if (_closing) return true;
return HookNativeMethods.UnhookWindowsHookEx(handle) != 0;
}
}
}