private int MainHookProc( int code, IntPtr wParam, IntPtr lParam )
{
//Debug.WriteLine( "HookProcInvoked " );
if( code < 0 ) return Win32Wrapper.CallNextHookEx( _hookHandle, code, wParam, lParam );
HookEventArgs e = new HookEventArgs(code, wParam, lParam);
if( HookProcInvoked != null ) HookProcInvoked( this, e );
if( e.Cancel ) return CANCEL_VALUE;
return Win32Wrapper.CallNextHookEx( _hookHandle, code, wParam, lParam );
}