- L'exemple suivant permet de déplacer (et retailler une fenêtre de votre application favorite ... qui n'a peut-être rien de .NET) à partir d'une fenêtre WinForm
- Le projet à été développé avec la Version 1.1 et n'est pas compatible avec la Version 1, je ne l'ai donc pas livré
- Ceci dit, rien de plus simple.
-
- Faire un simple projet WinForm dont le look figure dans le .JPG
- Ajouter les directives suivantes
- using System.Runtime.InteropServices;//pour PInvoke (DllImport)
- using System.Threading;//pour le Sleep
-
- Ajouter les méthodes utilisées
- [DllImport("user32.dll", CharSet=CharSet.Auto)]
- public static extern int FindWindow (string lpClassName, string lpWindowName);
-
- [DllImport("user32.dll", CharSet=CharSet.Auto)]
- public static extern int FlashWindow (int hwnd, int bInvert);
-
- [DllImport("user32.dll", CharSet=CharSet.Auto)]
- public static extern int MoveWindow (int hwnd, int x, int y, int width, int height, int repaint);
-
- Ajouter dans la classe , le Handler sur bouton
- private void cmdFlash_Click(object sender, System.EventArgs e)
- {
- int hwnd = FindWindow(null, txtFenetre.Text);
- lblHwnd.Text = "hwnd='"+ hwnd.ToString() + "'";
- if (hwnd==0) return;
- MoveWindow(hwnd, 0,0,300,300,1);
- Thread.Sleep(1000);
- FlashWindow(hwnd, 0);
- }
-
- C'est Tout !
- Si votre DLL est autre qu'une DLL Système, soyez sûr qu'elle soit bien placée pour être retrouvée par Windows...mais ça ce n'est plus de l'Interop mais du classique !
L'exemple suivant permet de déplacer (et retailler une fenêtre de votre application favorite ... qui n'a peut-être rien de .NET) à partir d'une fenêtre WinForm
Le projet à été développé avec la Version 1.1 et n'est pas compatible avec la Version 1, je ne l'ai donc pas livré
Ceci dit, rien de plus simple.
Faire un simple projet WinForm dont le look figure dans le .JPG
Ajouter les directives suivantes
using System.Runtime.InteropServices;//pour PInvoke (DllImport)
using System.Threading;//pour le Sleep
Ajouter les méthodes utilisées
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int FindWindow (string lpClassName, string lpWindowName);
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int FlashWindow (int hwnd, int bInvert);
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int MoveWindow (int hwnd, int x, int y, int width, int height, int repaint);
Ajouter dans la classe , le Handler sur bouton
private void cmdFlash_Click(object sender, System.EventArgs e)
{
int hwnd = FindWindow(null, txtFenetre.Text);
lblHwnd.Text = "hwnd='"+ hwnd.ToString() + "'";
if (hwnd==0) return;
MoveWindow(hwnd, 0,0,300,300,1);
Thread.Sleep(1000);
FlashWindow(hwnd, 0);
}
C'est Tout !
Si votre DLL est autre qu'une DLL Système, soyez sûr qu'elle soit bien placée pour être retrouvée par Windows...mais ça ce n'est plus de l'Interop mais du classique !