1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| class Win32
{
[DllImport("user32.dll", EntryPoint = "SetWindowPos")]
public static extern IntPtr SetWindowPos
(
IntPtr hWnd,
IntPtr hWndInsertAfter,
int X,
int Y,
int cx,
int cy,
uint uFlags
);
public const uint SWP_ASYNCWINDOWPOS = 0x4000;
public const uint SWP_DEFERERASE = 0x2000;
public const uint SWP_DRAWFRAME = 0x0020;
public const uint SWP_FRAMECHANGED = 0x0020;
public const uint SWP_HIDEWINDOW = 0x0080;
public const uint SWP_NOACTIVATE = 0x0010;
public const uint SWP_NOCOPYBITS = 0x0100;
public const uint SWP_NOMOVE = 0x0002;
public const uint SWP_NOOWNERZORDER = 0x0200;
public const uint SWP_NOREDRAW = 0x0008;
public const uint SWP_NOREPOSITION = 0x0200;
public const uint SWP_NOSENDCHANGING = 0x0400;
public const uint SWP_NOSIZE = 0x0001;
public const uint SWP_NOZORDER = 0x0004;
public const uint SWP_SHOWWINDOW = 0x0040;
public const int HWND_TOP = 0;
public const int HWND_BOTTOM = 1;
public const int HWND_TOPMOST = -1;
public const int HWND_NOTOPMOST = -2;
}
private void BtnLancerNotePad_Click(object sender, EventArgs e)
{
// Instance de la classe Process
Process proc = new Process();
// Nom de l'executable à lancer
proc.StartInfo.FileName = "notepad.exe";
// Arguments à passer à l'exécutable à lancer
proc.StartInfo.Arguments = "C:\\Test\\Test.txt";
// Démarrage du processus
proc.Start();
proc.WaitForInputIdle(); // Nécessaire (conseillé dans API) : attend que le Processus soit inactif
IntPtr HandleProgramme = proc.MainWindowHandle;
// Lancement de Notepad :
// Toujours devant (HWND_TOPMOST)
// A 100 pixels du bord gauche de l'écran
// A 100 pixels du bord haut de l'écran
// Taille de 500 pixels en X
// Taille de 500 pixels en Y
// Affichage Normal de la fenêtre (Win32.SWP_SHOWWINDOW)
Win32.SetWindowPos(HandleProgramme,(IntPtr)Win32.HWND_TOPMOST,100,100,500,500,Win32.SWP_SHOWWINDOW);
// On libère les ressources dont on n'a plus besoin.
proc.Close(); // Attention Close ne met pas fin au processus.
} |
Partager