我以前编程的一个程序代码丢了,急啊...我想把以前的运行程序嵌入到我现在的VB程序窗体中,请问如何解决?

解决方案 »

  1.   

    Option ExplicitPrivate Const GW_HWNDNEXT = 2Private 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 LongPrivate old_parent As Long
    Private child_hwnd As Long' Return the window handle for an instance handle.
    Private 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    ' Get the first window handle.
        test_hwnd = FindWindow(ByVal 0&, ByVal 0&)    ' Loop until we find the target or we run out
        ' of windows.
        Do While test_hwnd <> 0
            ' See if this window has a parent. If not,
            ' it is a top-level window.
            If GetParent(test_hwnd) = 0 Then
                ' This is a top-level window. See if
                ' it has the target instance handle.
                test_thread_id = GetWindowThreadProcessId(test_hwnd, test_pid)            If test_pid = target_pid Then
                    ' This is the target.
                    InstanceToWnd = test_hwnd
                    Exit Do
                End If
            End If        ' Examine the next window.
            test_hwnd = GetWindow(test_hwnd, GW_HWNDNEXT)
        Loop
    End FunctionPrivate Sub cmdFree_Click()
        SetParent child_hwnd, old_parent    cmdRun.Enabled = True
        cmdFree.Enabled = False
    End SubPrivate Sub cmdRun_Click()
    Dim pid As Long
    Dim buf As String
    Dim buf_len As Long
    Dim styles As Long    ' Start the program.
        pid = Shell(txtProgram.Text, vbNormalFocus)
        If pid = 0 Then
            MsgBox "Error starting program"
            Exit Sub
        End If    ' Get the window handle.
        child_hwnd = InstanceToWnd(pid)    ' Reparent the program so it lies inside
        ' the PictureBox.
        old_parent = SetParent(child_hwnd, MDIForm1.hwnd)    cmdRun.Enabled = False
        cmdFree.Enabled = True
    End Sub
      

  2.   

    看看《电脑爱好者》出的步步高精彩100例《VB编程高手之精彩100例》中有个《程序中的程序》例子。就讲了写一个程序中间弄个窗口调用EXE文件。
      

  3.   

    这样好像有点问题:对于Calc.exe文件等可以,对于WinWord.exe就不行了,原因是WinWord中一样MDI窗体.请问遇到这样的情况又如何解决
      

  4.   

    我现在不在国内,无法买到.请问yugui(天锋) 哪里又下载的么