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 60 61 62 63 64 65 66
| public partial class Form1 : Form
{
private Form _container;
private Process _process;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string processName = "notepad";
LaunchOnTop(processName);
}
[DllImport("user32.dll")]
private static extern IntPtr SetParent(IntPtr childWindow, IntPtr parentWindow);
[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, uint windowStyle);
[DllImport("user32.dll")]
private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags);
private void LaunchOnTop(string processPath)
{
Process process = new Process();
process.StartInfo.FileName = processPath;
process.Start();
process.WaitForInputIdle();
_process = process;
if (process != null)
{
OnTop();
}
}
private void OnTop()
{
_container = new Form();
_container.ResizeEnd += _container_Resize;
_container.Show(this);
SetParent(_process.MainWindowHandle, _container.Handle);
ShowWindow(_process.MainWindowHandle, 3u);
resize();
}
private void _container_Resize(object sender, EventArgs e)
{
resize();
}
private void resize()
{
if (_process != null)
{
// Pour forcer notre process à occuper tout l'espace de notre formulaire
ShowWindow(_process.MainWindowHandle, 1u);
ShowWindow(_process.MainWindowHandle, 3u);
}
}
} |
Partager