Option Explicit
Private Declare Function FindWindow Lib "user32 " Alias "FindWindowA " (ByVal lpClassName As Long, ByVal lpWindowName As Long) As Long
Private Declare Function GetParent Lib "user32 " (ByVal hwnd As Long) As Long
Private Declare Function SetParent Lib "user32 " (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32 " (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function GetWindow Lib "user32 " (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function LockWindowUpdate Lib "user32 " (ByVal hwndLock As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32 " () As Long
Private Declare Function DestroyWindow Lib "user32 " (ByVal hwnd As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32 " (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function GetCurrentProcess Lib "kernel32 " () As Long
Private Declare Function Putfocus Lib "user32 " Alias "SetFocus " (ByVal hwnd As Long) As Long
Const GW_HWNDNEXT = 2
Dim mWnd     As Long
Function InstanceToWnd(ByVal target_pid As Long) As Long
        Dim test_hwnd     As Long, test_pid       As Long, test_thread_id       As Long
        'Find   the   first   window
        test_hwnd = FindWindow(ByVal 0&, ByVal 0&)
        Do While test_hwnd <> 0
                'Check   if   the   window   isn 't   a   child
                If GetParent(test_hwnd) = 0 Then
                        'Get   the   window 's   thread
                        test_thread_id = GetWindowThreadProcessId(test_hwnd, test_pid)
                        If test_pid = target_pid Then
                                InstanceToWnd = test_hwnd
                                Exit Do
                        End If
                End If
                'retrieve   the   next   window
                test_hwnd = GetWindow(test_hwnd, GW_HWNDNEXT)
        Loop
End FunctionPrivate Sub Form_Load()
        'KPD-Team   1999
        'URL:   http://www.allapi.net/
        'E-Mail:   [email protected]
        Dim Pid     As Long
        'Lock   the   window   update
        LockWindowUpdate GetDesktopWindow
        'Execute   notepad.Exe
        Pid = Shell("c:\windows\notepad.exe ", vbNormalFocus)
        If Pid = 0 Then MsgBox "Error   starting   the   app "
        'retrieve   the   handle   of   the   window
        mWnd = InstanceToWnd(Pid)
        'Set   the   notepad 's   parent
        SetParent mWnd, Me.hwnd
        'Put   the   focus   on   notepad
        Putfocus mWnd
        'Unlock   windowupdate
        LockWindowUpdate False
End Sub
Private Sub Form_Unload(Cancel As Integer)
        'Unload   notepad
        DestroyWindow mWnd
        'End   this   program
        TerminateProcess GetCurrentProcess, 0
End Sub
在论坛考得总提示  找不到dll入口