diff -r 19c1aaf900dc -r 7acec5059fa6 WndProcRetHook.cs
--- a/WndProcRetHook.cs Tue Aug 12 20:37:57 2014 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-//=============================================================================
-// COPYRIGHT: Prosoft-Lanz
-//=============================================================================
-//
-// $Workfile: WndProcRetHook.cs $
-//
-// PROJECT : CodeProject Components
-// VERSION : 1.00
-// CREATION : 19.02.2003
-// AUTHOR : JCL
-//
-// DETAILS : This class implement the WH_CALLWNDPROCRET Windows hook mechanism.
-// From MSDN, Dino Esposito.
-//
-// WindowCreate, WindowDestroye and WindowActivate user events.
-//
-//-----------------------------------------------------------------------------
-using System;
-using System.Runtime.InteropServices;
-using System.Diagnostics;
-
-namespace CodeProject.Win32API.Hook
-{
- ///////////////////////////////////////////////////////////////////////
- #region Enum WndMessage
-
- ///
- /// windows message.
- ///
- public enum WndMessage : int
- {
- /// Sent to the dialog procedure immediately before the dialog is displayed.
- WM_INITDIALOG = 0x0110,
- /// Sent to the dialog procedure immediately before the dialog is displayed.
- WM_UNKNOWINIT = 0x0127
- }
- #endregion
-
- ///////////////////////////////////////////////////////////////////////
- #region Class WndProcRetEventArgs
-
- /// Class used for WH_CALLWNDPROCRET hook event arguments.
- public class WndProcRetEventArgs : EventArgs
- {
- /// wParam parameter.
- public IntPtr wParam;
- /// lParam parameter.
- public IntPtr lParam;
- /// CWPRETSTRUCT structure.
- public CwPRetStruct cw;
-
- internal WndProcRetEventArgs(IntPtr wParam, IntPtr lParam)
- {
- this.wParam = wParam;
- this.lParam = lParam;
- cw = new CwPRetStruct();
- Marshal.PtrToStructure(lParam, cw);
- }
- }
-
- ///
- /// CWPRETSTRUCT structure.
- ///
- [StructLayout(LayoutKind.Sequential)]
- public class CwPRetStruct
- {
- /// Return value.
- public int lResult;
- /// lParam parameter.
- public int lParam;
- /// wParam parameter.
- public int wParam;
- /// Specifies the message.
- public WndMessage message;
- /// Handle to the window that processed the message.
- public IntPtr hwnd;
- }
-
- #endregion
-
- ///////////////////////////////////////////////////////////////////////
- #region Class WndProcRetHook
-
- ///
- /// Class to expose the windows WH_CALLWNDPROCRET hook mechanism.
- ///
- public class WndProcRetHook : WindowsHook
- {
- ///
- /// WH_CALLWNDPROCRET hook delegate method.
- ///
- public delegate void WndProcEventHandler(object sender, WndProcRetEventArgs e);
-
- private IntPtr hWndHooked;
-
- ///
- /// Window procedure event.
- ///
- public event WndProcEventHandler WndProcRet;
-
- ///
- /// Construct a WH_CALLWNDPROCRET hook.
- ///
- ///
- /// Handle of the window to be hooked. IntPtr.Zero to hook all window.
- ///
- public WndProcRetHook(IntPtr hWndHooked) : base(HookType.WH_CALLWNDPROCRET)
- {
- this.hWndHooked = hWndHooked;
- this.HookInvoke += new HookEventHandler(WndProcRetHookInvoked);
- }
- ///
- /// Construct a WH_CALLWNDPROCRET hook giving a hook filter delegate method.
- ///
- ///
- /// Handle of the window to be hooked. IntPtr.Zero to hook all window.
- ///
- /// Hook filter event.
- public WndProcRetHook(IntPtr hWndHooked, HookProc func) : base(HookType.WH_CALLWNDPROCRET, func)
- {
- this.hWndHooked = hWndHooked;
- this.HookInvoke += new HookEventHandler(WndProcRetHookInvoked);
- }
-
- // handles the hook event
- private void WndProcRetHookInvoked(object sender, HookEventArgs e)
- {
- WndProcRetEventArgs wpe = new WndProcRetEventArgs(e.wParam, e.lParam);
- if ((hWndHooked == IntPtr.Zero || wpe.cw.hwnd == hWndHooked) && WndProcRet != null)
- WndProcRet(this, wpe);
- return;
- }
- }
- #endregion
-}