Vous pouvez le faire via l' System.Windows.Interop
d'espace de noms qui contient une classe nommée HwndSource
.
Exemple d'utilisation de cette
using System;
using System.Windows;
using System.Windows.Interop;
namespace WpfApplication1
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
protected override void OnSourceInitialized(EventArgs e)
{
base.OnSourceInitialized(e);
HwndSource source = PresentationSource.FromVisual(this) as HwndSource;
source.AddHook(WndProc);
}
private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
// Handle messages...
return IntPtr.Zero;
}
}
}
Complètement tirées de l'excellent blog post: l'Aide personnalisée WndProc dans des applications WPF par Steve Rands (remarque, le lien n'est plus valide)
Ce site est bas, mais maintenant vous pouvez le voir à partir de la Wayback moteur: http://web.archive.org/web/20091019124817/http://www.steverands.com/2009/03/19/custom-wndproc-wpf-apps/