internal int CoreHookProc(int code, IntPtr wParam, IntPtr lParam)
{
if (code < 0)
return CallNextHookEx(hHook, code, wParam, lParam);
// let clients determine what to do
HookEventArgs e = new HookEventArgs(code, wParam, lParam);
OnHookInvoke(e);
// yield to the next hook in the chain
return CallNextHookEx(hHook, code, wParam, lParam);
}