COMO IMPORTAR UM PROGRAMA EXECUTAVEL E QUE FIQUE A

MARCIOSILVA73 19/11/2012 21:11:11
#414469
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.
  • PROFESSOR 16/12/2012 00:09:16
    #416022
    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:

    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