COMO IMPORTAR UM PROGRAMA EXECUTAVEL E QUE FIQUE A
Olá pessoal!
Estou tentando desenvolver um programa que dentro do seu Form principal deixe aberto(carregado) um outro programa instalado em meu PC, sem ter que ainda [Ô]chamá-lo[Ô]. Sendo assim, logo que abrir o meu programa em desenvolvimento , faça excutar simutâneamente o programa desejado dentro deste Form! Alguma dica?Já pesquisei e só vejo códigos que faça abrir e que deixam fora do form!
O programa que estou desenvolvendo, trata-se de um para rádio, como o [Ô]Zara Rádio[Ô],(programa executável) o detalhe é o seguinte: Quero [Ô]embutir[Ô] este programa ao meu, para facilitar a nós comunicadores a cerca de não minimizar o meu programa, pois ao lado esquerdo do form, coloquei uma coluna com WebBrowser contendo a Transmissão pela WebCam e abaixo o Mural de Recados! Extrai os códigos já prontos para ficarem no Form, para assim que abrirmos o programa vejamos quem está [Ô]ON[Ô] ler os recados no Mural! Quero só aproveitar o [Ô]Zara Rádio[Ô] para [Ô]embutÃ-lo neste form! Assim é bem mais cômodo!
Grato desde já!
Regras de uso do Fórum.
Formatação correta
Sempre esteja atento a formatação de seus tópicos, evite usar tags de maneira desnecessária (como colocar todo o tópico em negrito ou usar uma cor de fonte para todo o tópico). Da mesma use palavras em maiúscula com bom-senso (pois vale lembrar, na internet quando você escreve em maiúsculo está gritando com as pessoas que estão lendo seu texto.
Estou tentando desenvolver um programa que dentro do seu Form principal deixe aberto(carregado) um outro programa instalado em meu PC, sem ter que ainda [Ô]chamá-lo[Ô]. Sendo assim, logo que abrir o meu programa em desenvolvimento , faça excutar simutâneamente o programa desejado dentro deste Form! Alguma dica?Já pesquisei e só vejo códigos que faça abrir e que deixam fora do form!
O programa que estou desenvolvendo, trata-se de um para rádio, como o [Ô]Zara Rádio[Ô],(programa executável) o detalhe é o seguinte: Quero [Ô]embutir[Ô] este programa ao meu, para facilitar a nós comunicadores a cerca de não minimizar o meu programa, pois ao lado esquerdo do form, coloquei uma coluna com WebBrowser contendo a Transmissão pela WebCam e abaixo o Mural de Recados! Extrai os códigos já prontos para ficarem no Form, para assim que abrirmos o programa vejamos quem está [Ô]ON[Ô] ler os recados no Mural! Quero só aproveitar o [Ô]Zara Rádio[Ô] para [Ô]embutÃ-lo neste form! Assim é bem mais cômodo!
Grato desde já!
Regras de uso do Fórum.
Sempre esteja atento a formatação de seus tópicos, evite usar tags de maneira desnecessária (como colocar todo o tópico em negrito ou usar uma cor de fonte para todo o tópico). Da mesma use palavras em maiúscula com bom-senso (pois vale lembrar, na internet quando você escreve em maiúsculo está gritando com as pessoas que estão lendo seu texto.
Antes, não custa alertar, esse procedimento não torna o aplicativo externo seu, digo, seu aplicativo não vai [Ô]controlar[Ô] o aplicativo externo, nem trocar dados com ele. Apenas vai [Ô]encaixar[Ô] a janela do aplicativo externo á uma janela de sua aplicação. Da mesma forma, você precisará manter atenção redobrada com as instâncias.
O mais correto seria contatar o autor do aplicativo externo e propôr um desenvolvimento conjunto, ou alguma concessão.Mas vamos em frente.
Você pode tentar utilizar algumas APIs da User32 do Windows, como se fazia no VB6, mas lembre-se de que sempre que utiliza algum componente não-nativo da plataforma .Net, principalmente um componente como a User32, que está em [Ô]vias de extinção[Ô], está arriscando á que o aplicativo funcione apenas em ambientes iguais ao do desenvolvimento.
E isso funciona ? Sim. E você pode colocar o aplicativo externo como [Ô]filhote[Ô] de qualquer formulário, não apenas de um MDI, pois a operação realizada é o que antes se convencionava chamar de [Ô]subclassing[Ô] dos processos para as janelas, via ponteiros de dispositivo (FindWindow e FindWindowEx, da User32, retornam esse ponteiro).
Basicamente, [Ô]portando[Ô] ou [Ô]convertendo[Ô] a idéia que se usava no VB6 para a .Net, vou usar o Notepad.exe como exemplo, resulta em algo como:
O mais correto seria contatar o autor do aplicativo externo e propôr um desenvolvimento conjunto, ou alguma concessão.Mas vamos em frente.
Você pode tentar utilizar algumas APIs da User32 do Windows, como se fazia no VB6, mas lembre-se de que sempre que utiliza algum componente não-nativo da plataforma .Net, principalmente um componente como a User32, que está em [Ô]vias de extinção[Ô], está arriscando á que o aplicativo funcione apenas em ambientes iguais ao do desenvolvimento.
E isso funciona ? Sim. E você pode colocar o aplicativo externo como [Ô]filhote[Ô] de qualquer formulário, não apenas de um MDI, pois a operação realizada é o que antes se convencionava chamar de [Ô]subclassing[Ô] dos processos para as janelas, via ponteiros de dispositivo (FindWindow e FindWindowEx, da User32, retornam esse ponteiro).
Basicamente, [Ô]portando[Ô] ou [Ô]convertendo[Ô] a idéia que se usava no VB6 para a .Net, vou usar o Notepad.exe como exemplo, resulta em algo como:
Imports System.Runtime.InteropServices
Public Class Form1
<DllImport([Ô]User32[Ô], CharSet:=CharSet.Auto, ExactSpelling:=True)> _
Public Shared Function SetParent(ByVal hWndChild As IntPtr, ByVal hWndParent As IntPtr) As IntPtr
End Function
Private Declare Function FindWindow Lib [Ô]user32.dll[Ô] Alias [Ô]FindWindowA[Ô] (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim PROCHANDLE As System.IntPtr = -1
For Each proc In Process.GetProcesses
[ô]Aqui, você precisa saber o nome do processo do aplicativo externo.
If LCase(proc.ProcessName) = [Ô]notepad[Ô] Then
PROCHANDLE = proc.Handle
End If
Next
If PROCHANDLE = -1 Then
[ô]Aqui, caso o processo ainda não tenha iniciado, você cria um
[ô]novo, mas precisa saber exatamente o nome e caminho do executável.
PROCHANDLE = Process.Start([Ô]C:\windows
otepad.exe[Ô]).Handle
SetParent(PROCHANDLE, Me.Handle)
End If
End Sub
End Class
Tópico encerrado , respostas não são mais permitidas