EXECUTAR UM .EXE COMO MDICHILD

FNANDOOD 25/03/2011 17:21:30
#369194
Pessoal, quero executar um arquivo.exe e quero que ele fique dentro de um form, tipo um mdichild.

o programa que quero executar é um visualizador de pdf, chamado sumatrapdf (baixaki.com.br).

GLAUCIO 25/03/2011 18:24:15
#369202
FNANDOOD, é só definir o teu form como parent (Pai) do executável (da janela dele).

Como?

Pega o hwnd (handle) do executável que você quer, tem várias api[ô]s para vc fazer isso (getwindow, enumWindows,..)

No caso da enumWindows, como o próprio nome diz, ela enumera todas as janelas abertas.
Para usar ela é só criar uma procedure de callback e recuperar o hwnd do executável desejado verificando se o item no callback é o desejado (seja pelo título, ou pela classe da janela (ClassName)).

Após obter o hwnd da maneira acima, basta agora definir o hwnd do aplicativo desejado como child (filho) do seu form usando a Api SetParent.


Se tiver dúvidas em como usar as api[ô]s acima, me dá um toque que envio um exemplo.
Att.
MARCELOKROL 25/03/2011 19:24:06
#369204
Funciona com o bloco de notas mais acho que é so adaptar para o seu aplicativo desejado.

Private Declare Function SetParent Lib [Ô]user32[Ô] (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function FindWindow Lib [Ô]user32[Ô] Alias [Ô]FindWindowA[Ô] (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub Command1_Click()
Shell ([Ô]notepad[Ô])
janela = FindWindow(vbNullString, [Ô]Sem título - Bloco de notas[Ô])
SetParent janela, Me.hWnd
End Sub
ADRIANOM 25/03/2011 19:57:56
#369206
Faltou no


Private Declare Function SetParent Lib [Ô]user32[Ô] (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function FindWindow Lib [Ô]user32[Ô] Alias [Ô]FindWindowA[Ô] (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Sub Command1_click()
Dim Janela as String
Shell ([Ô]Notepad[Ô])
Janela = FindWindow(vbNullString, [Ô]Sem Título - Bloco de Notas[Ô])
SetParente Janela, ME.hWnd
End Sub


Espero que a correção o ajude!
FNANDOOD 25/03/2011 23:22:44
#369218
Deu certo, mas como faço para centralizar a o programa.exe dentro do form?
Tópico encerrado , respostas não são mais permitidas