前端之家收集整理的这篇文章主要介绍了
VB 让别的程序在自己窗体中运行,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Private Const GW_HWNDNEXT = 2
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long,lpdwProcessId As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Long,ByVal lpWindowName As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long,ByVal wCmd As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long,ByVal lpString As String,ByVal cch As Long) As Long
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long,ByVal hWndNewParent As Long) As Long
Function InstanceToWnd(ByVal target_pid As Long) As Long
Dim test_hwnd As Long
Dim test_pid As Long
Dim test_thread_id As Long
test_hwnd = FindWindow(ByVal 0&,ByVal 0&)
Do While test_hwnd
If GetParent(test_hwnd) = 0 Then
test_thread_id = GetWindowThreadProcessId(test_hwnd,test_pid)
If test_pid = target_pid Then
InstanceToWnd = test_hwnd
Exit Do
End If
End If
test_hwnd = GetWindow(test_hwnd,GW_HWNDNEXT)
Loop
End Function
Private Sub Form_Load()
Dim pid As Long
pid = Shell("calc.exe",vbNormalFocus) '这里可修改程序路径
If pid = 0 Then
Exit Sub
End If
Calc_Hwnd& = InstanceToWnd(pid)
Calc_OldParent& = SetParent(Calc_Hwnd&,Me.hwnd)
End Sub