COMO ABRIR APLICATIVOS NUM FORM FILHO,COMO NO WORD
Como faço para abrir um aplicativo qualquer (notepad por exemplo)dentro de um Form no VB6? Fazendo do mesmo jeito como o Acrobat abre novos documentos dentro de um mesmo form.é possÃvel?
Com a função GetActtive Window não funciona.
Só se for assim . . .
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Form_Load()
janela = GetActiveWindow
SetParent janela, Me.hWnd
End Sub
mas, . . .
Só se for assim . . .
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Form_Load()
janela = GetActiveWindow
SetParent janela, Me.hWnd
End Sub
mas, . . .
Assim funciona:
Coloque em um módulo.
Então é só chamar a função.
Private Sub Command1_Click()
ExeParente "c:\windows\system32\calc.exe", Me.hWnd
End Sub
Mas o que eu postei anteriormente usando o código do usuario TEMOR também fica legal . . . heheheheh . . .
Caso sua questão tenha sido respondida, favor encerrar o tópico.
Coloque em um módulo.
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Long, ByVal lpWindowName As Long) As Long
Public Declare Function GetParent Lib "user32" (ByVal hWnd As Long) As Long
Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
Public Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
Public Function IDparaHwnd(ByVal T_ArqExeId As Long) As Long
Dim Teste_Hwnd As Long
Dim Teste_ArqExe_Id As Long
Dim Teste_T_ArqExe_Id As Long
Teste_Hwnd = FindWindow(ByVal 0&, ByVal 0&)
Do While Teste_Hwnd <> 0
If GetParent(Teste_Hwnd) = 0 Then
Teste_T_ArqExe_Id = GetWindowThreadProcessId(Teste_Hwnd, Teste_ArqExe_Id)
If Teste_ArqExe_Id = T_ArqExeId Then
IDparaHwnd = Teste_Hwnd
Exit Do
End If
End If
Teste_Hwnd = GetWindow(Teste_Hwnd, 2)
Loop
End Function
Public Sub ExeParente(ArqExe As String, HwndForm As Long)
Dim ArqExeId As Long
Dim ArqExeHwnd As Long
ArqExeId = Shell(ArqExe, vbNormalFocus)
If ArqExeId = 0 Then MsgBox "Erro ao abrir aplicação!", vbCritical, "Aviso..."
ArqExeHwnd = IDparaHwnd(ArqExeId)
SetParent ArqExeHwnd, HwndForm
End Sub
Então é só chamar a função.
Private Sub Command1_Click()
ExeParente "c:\windows\system32\calc.exe", Me.hWnd
End Sub
Mas o que eu postei anteriormente usando o código do usuario TEMOR também fica legal . . . heheheheh . . .
Caso sua questão tenha sido respondida, favor encerrar o tópico.
Tópico encerrado , respostas não são mais permitidas