J'aimerais intercepter les message Windows type WM_NCHITTEST d'une application externe à ma Form afin de pouvoir le traiter dans WndProc (NativeWindow) et rendre l'appli externe indeplacable. Voici mon code :
public partial class Form1 : Form
{
IntPtr hwnd;
public Form1()
{
InitializeComponent();
Process[] procs = Process.GetProcessesByName("calc");
if (procs.Length != 0)
{
hwnd = procs[0].MainWindowHandle;
}
else
MessageBox.Show("Calculatrice is not running.");
MyNativeWindow mnw = new MyNativeWindow(hwnd);
}
public class MyNativeWindow : NativeWindow
{
public MyNativeWindow(IntPtr hParent)
{
AssignHandle(hParent);
}
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case 0x84:
base.WndProc(ref m);
if (m.Result == (IntPtr)2) // 2 = barre de titre
m.Result = (IntPtr)0;
break;
default:
base.WndProc(ref m);
break;
}
}
}
}
Aucun message arrive dans la methode WndProc.
Par contre si j'assigne le Handle de ma Form pour un essai, WndProc intercepte tous les messages et ma Form devient indéplacable.
Comment intercepter les messages de l'appli externe ? Faut il rajouter un evenement quelque part ou est ce parce que ce n'est pas le même Thread ?
Ok merci, je vais lire cet article. Mais d'après ce que j'ai deja lu sur le Hook, je vais devoir utiliser un Hook global avec DLL externe, et la, ca se complique