Intercepter le message WM_WINDOWPOSCHANGING d'une fenêtre extern e
1 réponse
Jag
Bonjour,
J'aimerais intercepter le message WM_WINDOWPOSCHANGING d'une fenêtre externe
(Titre : "window2") à mon application afin d'en interdire le deplacement. Je
recupere le handle de "window2" avec la fonction API FindWindow(null,
"window2"). Je pense qu'il faut ensuite utiliser la fonction C# WndProc pour
traiter le message, mais je suis un peu perdu. Quelqu'un pourrait il m'aider
svp ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jag
Supplément...
J'utilise une class héritant de NativeWindow et j'assigne le Handle de la fenêtre externe mais les messages ne parviennent pas à ma Form. Voici le code :
public partial class Form1 : Form { [DllImport("User32.dll")] public static extern int FindWindow(string lpClassName, string lpWindowName);
public Form1() { InitializeComponent(); MyNativeWindow nw = new MyNativeWindow(); nw.AssignHandle((IntPtr)FindWindow(null, "window2")); } }
public class MyNativeWindow : NativeWindow { public const int WM_WINDOWPOSCHANGING = 0x0046;
protected override void WndProc(ref Message m) { MessageBox.Show(m.Msg.ToString());
switch (m.Msg) { case WM_WINDOWPOSCHANGING:
MessageBox.Show("ww");
break; } base.WndProc(ref m); } }
Quelqu'un aurait il une idée ? Merci d'avance.
Jag
"Jag" a écrit :
Bonjour,
J'aimerais intercepter le message WM_WINDOWPOSCHANGING d'une fenêtre externe (Titre : "window2") à mon application afin d'en interdire le deplacement. Je recupere le handle de "window2" avec la fonction API FindWindow(null, "window2"). Je pense qu'il faut ensuite utiliser la fonction C# WndProc pour traiter le message, mais je suis un peu perdu. Quelqu'un pourrait il m'aider svp ?
Merci d'avance
Jag
Supplément...
J'utilise une class héritant de NativeWindow et j'assigne le Handle de la
fenêtre externe mais les messages ne parviennent pas à ma Form. Voici le code
:
public partial class Form1 : Form
{
[DllImport("User32.dll")]
public static extern int FindWindow(string lpClassName, string
lpWindowName);
public Form1()
{
InitializeComponent();
MyNativeWindow nw = new MyNativeWindow();
nw.AssignHandle((IntPtr)FindWindow(null, "window2"));
}
}
public class MyNativeWindow : NativeWindow
{
public const int WM_WINDOWPOSCHANGING = 0x0046;
protected override void WndProc(ref Message m)
{
MessageBox.Show(m.Msg.ToString());
switch (m.Msg)
{
case WM_WINDOWPOSCHANGING:
MessageBox.Show("ww");
break;
}
base.WndProc(ref m);
}
}
Quelqu'un aurait il une idée ? Merci d'avance.
Jag
"Jag" a écrit :
Bonjour,
J'aimerais intercepter le message WM_WINDOWPOSCHANGING d'une fenêtre externe
(Titre : "window2") à mon application afin d'en interdire le deplacement. Je
recupere le handle de "window2" avec la fonction API FindWindow(null,
"window2"). Je pense qu'il faut ensuite utiliser la fonction C# WndProc pour
traiter le message, mais je suis un peu perdu. Quelqu'un pourrait il m'aider
svp ?
J'utilise une class héritant de NativeWindow et j'assigne le Handle de la fenêtre externe mais les messages ne parviennent pas à ma Form. Voici le code :
public partial class Form1 : Form { [DllImport("User32.dll")] public static extern int FindWindow(string lpClassName, string lpWindowName);
public Form1() { InitializeComponent(); MyNativeWindow nw = new MyNativeWindow(); nw.AssignHandle((IntPtr)FindWindow(null, "window2")); } }
public class MyNativeWindow : NativeWindow { public const int WM_WINDOWPOSCHANGING = 0x0046;
protected override void WndProc(ref Message m) { MessageBox.Show(m.Msg.ToString());
switch (m.Msg) { case WM_WINDOWPOSCHANGING:
MessageBox.Show("ww");
break; } base.WndProc(ref m); } }
Quelqu'un aurait il une idée ? Merci d'avance.
Jag
"Jag" a écrit :
Bonjour,
J'aimerais intercepter le message WM_WINDOWPOSCHANGING d'une fenêtre externe (Titre : "window2") à mon application afin d'en interdire le deplacement. Je recupere le handle de "window2" avec la fonction API FindWindow(null, "window2"). Je pense qu'il faut ensuite utiliser la fonction C# WndProc pour traiter le message, mais je suis un peu perdu. Quelqu'un pourrait il m'aider svp ?