加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

VB 让别的程序在自己窗体中运行

发布时间:2020-12-17 08:02:53 所属栏目:百科 来源:网络整理
导读:Private Const GW_HWNDNEXT = 2Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long,lpdwProcessId As Long) As LongPrivate Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As LongPrivate Declare Funct
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读