elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Incrustar Programa y sus instancias en un form.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Incrustar Programa y sus instancias en un form.  (Leído 3,536 veces)
Charlie BoT

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Incrustar Programa y sus instancias en un form.
« en: 9 Enero 2017, 23:13 pm »

Saludos, vengo con un problema. quiero incrustar un programa en un formulario y he estado buscando en la web info al respecto y me encontré con un código que lo hace bastante simple, el código funciona, pero mi problema es que como es obio solo incrusta la instancia principal o no todas las sub instancias pertenecientes a el mismo programa.

Acá dejo el código en el form de prueba que tengo....




Código
  1. Public Class Form1
  2.  
  3. #Region " API "
  4.  
  5.    Declare Auto Function SetParent Lib "user32.dll" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As Integer
  6.    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
  7.    Private Const WM_SYSCOMMAND As Integer = 274
  8.    Private Const SC_MAXIMIZE As Integer = 61488
  9.  
  10. #End Region
  11.  
  12.  
  13.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  14.  
  15.    End Sub
  16.  
  17.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  18.        Dim proceso As Process
  19.        proceso = Process.Start("C:\Program Files\AIMP\AIMP.exe")
  20.        proceso.WaitForInputIdle()
  21.        System.Threading.Thread.Sleep(1200)
  22.        SetParent(proceso.MainWindowHandle, Me.Panel1.Handle)
  23.  
  24.        SendMessage(proceso.MainWindowHandle, WM_SYSCOMMAND, SC_MAXIMIZE, 0)
  25.    End Sub
  26. End Class
  27.  


Con este código logro incrustar el reproductor de música aimp, pero si abro las opciones del aimp estas se salen del form contenedor....



Bueno, espero haberme explicado bien y espero a sus sugerencias mientras sigo en la búsqueda de información...


« Última modificación: 18 Enero 2017, 21:20 pm por Eleкtro » En línea

okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Re: Incrustar Programa y sus instancias en un form.
« Respuesta #1 en: 18 Enero 2017, 20:40 pm »

hola

Esto es de Visual Basic 6 creo que pero es lo que pides, solo tienes que pasarlo a Visual Basic .NET

http://foro.elhacker.net/programacion_visual_basic/abrir_ejecutable_en_un_form_iquestes_posible_abrir_chrome-t429104.0.html

El usuario de este enlace pide como incrustar Chrome dentro del formulario de su aplicación.


Usa código no administrado por Net Framework, es decir se usa API de Windows.

NOTA:
Puede que alguien sepa como hacer lo mismo con código administrado por .Net Framework y esté esperando a que yo responda para decir la otra forma....  :P. Pues estupendo, me gustaría verla porque no la se.  :-*

chau


« Última modificación: 18 Enero 2017, 20:48 pm por okik » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Incrustar Programa y sus instancias en un form.
« Respuesta #2 en: 18 Enero 2017, 21:40 pm »

hacer lo mismo con código administrado

Yo también lo dudo mucho. Microsoft siempre le ha puesto mala cara y a intentado cortar por lo sano el uso de la programación intrusiva y dudósamente ética en .NET. A algo como por ejemplo permitir de forma guiada el interferir con una ventana externa fuera de la unidad de procesos de tu propia aplicación para manipularla y adjuntarla a la ventana principal creo que se podría asumir como algo inseguro dentro de la seguridad que ofrece el código administrado de .NET, no creo que haya modo guiado para hacer eso (me refiero a un equivalente/wrapper de la función SetParent), hay que hechar mano de la WinAPI.

Por otro lado, y aunque esto no tiene que ver demasiado, en .NET podemos encontrar el framework de Microsoft UI Automation (que es un rato intrusivo y dudósamente ético según con qué propósito se utilice) con el que podemos realizar análisis de tipo UI Spy en ventanas ajenas y disparar algunos eventos de forma automatizada (como invocar un botón en otra ventana) pero es por este motivo que su propósito ético y principal es el de poder implementar tests de tipo Coded UI Tests en ensamblados .NET externos.

Saludos!
« Última modificación: 18 Enero 2017, 21:46 pm por Eleкtro » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Abrir solo dos instancias de mi programa « 1 2 »
Programación Visual Basic
Gorky 11 4,314 Último mensaje 28 Marzo 2006, 00:29 am
por Ironhorse
obtener el hwnd de un programa sin form « 1 2 »
Programación Visual Basic
x64core 14 7,622 Último mensaje 28 Agosto 2011, 19:40 pm
por Hasseds
Varias instancias del mismo form?
Programación Visual Basic
Elemental Code 2 4,529 Último mensaje 23 Agosto 2012, 20:21 pm
por 79137913
Instancias múltiples de un programa.
Windows
Psyke1 4 4,004 Último mensaje 18 Enero 2013, 09:35 am
por x64core
[C#] Llamar Form que se agrego de un programa ya existente.
.NET (C#, VB.NET, ASP)
Ruben_efl18 2 2,267 Último mensaje 28 Mayo 2016, 05:17 am
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines