EXECUTAR UM .EXE COMO MDICHILD
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).
o programa que quero executar é um visualizador de pdf, chamado sumatrapdf (baixaki.com.br).
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.
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.
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
Faltou no
Espero que a correção o ajude!
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!
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