none
Ejecutar programa dentro de Panel de winform en VB.NET RRS feed

  • Pregunta

  • Hola buenos días! compañeros, así como digo en el titulo quiero dentro de un winform normal no MDI ejecutar o tener acceso a ejecutar un programa .exe que esta instalado en la computadora, este programa que deseo ejecutar no fue desarrollado por  mi, quisiera poder ejecutarla dentro de un objeto contenedor Panel y quede empotrado allí, esperando me puedan ayudar, les agradezco sus aportaciones.
    martes, 10 de noviembre de 2015 13:04

Respuestas

  • Public Class Form1
    
     Private Const WM_SYSCOMMAND As Integer = &H112
     Private Const SC_MAXIMIZE As Integer = &HF030
    
     Declare Auto Function SetParent Lib "user32.dll" (ByVal hWndChild As IntPtr, ByVal hWndParent As IntPtr) As Integer
     Declare Auto Function SendMessage Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
    
     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
      Dim proc As Process = Process.Start("iexplore")
      Threading.Thread.Sleep(500)
    
      SetParent(proc.MainWindowHandle, Me.Panel1.Handle)
      SendMessage(proc.MainWindowHandle, WM_SYSCOMMAND, SC_MAXIMIZE, 0)
    
     End Sub
    End Class
    Completando el ejemplo de legolas

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    martes, 10 de noviembre de 2015 14:09

Todas las respuestas

  • Process p = Process.Start("notepad.exe");
    Thread.Sleep(500); 
    SetParent(p.MainWindowHandle, panel1.Handle);
    
    [DllImport("user32.dll")]
    static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

    martes, 10 de noviembre de 2015 13:27
  • Public Class Form1
    
     Private Const WM_SYSCOMMAND As Integer = &H112
     Private Const SC_MAXIMIZE As Integer = &HF030
    
     Declare Auto Function SetParent Lib "user32.dll" (ByVal hWndChild As IntPtr, ByVal hWndParent As IntPtr) As Integer
     Declare Auto Function SendMessage Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
    
     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
      Dim proc As Process = Process.Start("iexplore")
      Threading.Thread.Sleep(500)
    
      SetParent(proc.MainWindowHandle, Me.Panel1.Handle)
      SendMessage(proc.MainWindowHandle, WM_SYSCOMMAND, SC_MAXIMIZE, 0)
    
     End Sub
    End Class
    Completando el ejemplo de legolas

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    martes, 10 de noviembre de 2015 14:09
  • Revisa este hilo

    https://social.msdn.microsoft.com/Forums/en-US/94b4aa87-c79b-456f-8e04-d53b1ea5d2b7/executing-an-external-application-from-vb-in-a-form?forum=vblanguage


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    martes, 10 de noviembre de 2015 14:10