这是我用来在图片框内运行另一个应用程序的示例代码:
Imports System.Diagnostics
Imports System.Runtime.InteropServices
Public Class Form1
<DllImport("user32.dll")> Public Shared Function SetParent(ByVal hwndChild As IntPtr, ByVal hwndNewParent As IntPtr) As Integer
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Process1 As New Process
Process1.StartInfo.FileName = "notepad.exe"
Process1.Start()
Do Until Process1.WaitForInputIdle = True
Application.DoEvents()
Loop
SetParent(Process1.MainWindowHandle, PictureBox1.Handle)
End Sub
End Class
因此,我能够在我的 VB2010 WindowsForm 中托管另一个应用程序并且它工作正常。但问题是,在 Windows7 中,Windows 会请求权限(无论您是否要允许 EXE 运行)。单击“允许”按钮后,exe 应用程序将在它自己的窗口中打开,而不是作为 PictureBox 的子窗口
我认为当 Windows 请求许可时,它正在跳过 SetParent() API 调用。我真的很感激任何建议。
谢谢 :)