Hola.. estoy creando un proyecto y necesito saber si se puede abrir dentro de un formulario una ventana de MS-DOS como si fuera MDI.
Bueno muchas gracias!! Un abrazo!!
Puedes intentar con la API SetWindowParent :P aunque no se si lo deja como MDI
Raul xD haha justo estaba posteando y me salio que se ha escrito un mensaje mientras escribía xD LOL
Bueno ahí te va xD
public partial class Form1 : Form
{
[DllImport("User32", CharSet = CharSet.Auto, ExactSpelling = true)]
internal static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndParent);
[DllImport("user32.dll")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
Process m_process;
public Form1()
{
InitializeComponent();
ProcessStartInfo procesInfo = new ProcessStartInfo("calc.exe");
m_process = Process.Start(procesInfo);
}
protected override void OnShown(EventArgs e)
{
IntPtr calcHandle = FindWindow("CalcFrame", null);
SetParent(calcHandle, this.Handle);
}
protected override void OnClosing(CancelEventArgs e)
{
m_process.Kill();
}
}
EDIT: Para dejarlo como MDI crea un MDI normal, y luego en SetParent pasas el handle de la ventana child del MDI..
Saludos
>>Muxas gracias voy ha probar y os digo!!!
Pueden decirme como coloco el codigo.. jeje y que debo hacer??
.. :S
En esta linea, colocas el nombre del proceso que quieres usar, en este caso es calc.exe, pero puede ser cualquiera.
ProcessStartInfo procesInfo = new ProcessStartInfo("calc.exe");
Y en este, colocas el nombre de la clase de la ventana, esto lo puedes encontrar usando Spy++. Sobre el uso de Spy++ hay mucho en internet (busca en google, ask, bing,etc)
IntPtr calcHandle = FindWindow("CalcFrame", null);
Y listo, con eso te debería funcionar.
Muchas Gracias!!