protected virtual void InitializeWindowProcedure() { if (NewWindowProcedure != null) { return; } HandledWindow = new HandleRef(null, User32.GetForegroundWindow()); NewWindowProcedure = WindowProcedure; NewWindowProcedurePtr = Marshal.GetFunctionPointerForDelegate(NewWindowProcedure); OldWindowProcedurePtr = User32.SetWindowLongPtr(HandledWindow, -4, NewWindowProcedurePtr); }
protected virtual void TerminateWindowProcedure() { if (NewWindowProcedure == null) { return; } User32.SetWindowLongPtr(HandledWindow, -4, OldWindowProcedurePtr); HandledWindow = new HandleRef(null, IntPtr.Zero); OldWindowProcedurePtr = IntPtr.Zero; NewWindowProcedurePtr = IntPtr.Zero; NewWindowProcedure = null; }
private void InitializeWindowProcedure() { if (NewWindowProcedure != null) { return; } Initialized = true; NewWindowProcedure = WindowProcedures; NewWindowProcedurePtr = Marshal.GetFunctionPointerForDelegate(NewWindowProcedure); OldWindowProcedurePtr = User32.SetWindowLongPtr(HandledWindow, -4, NewWindowProcedurePtr); }
private void TerminateWindowProcedure() { if (NewWindowProcedure == null) { return; } Initialized = false; User32.SetWindowLongPtr(HandledWindow, -4, OldWindowProcedurePtr); OldWindowProcedurePtr = IntPtr.Zero; NewWindowProcedurePtr = IntPtr.Zero; NewWindowProcedure = null; }