内的另一个应用程序这是我用一个PictureBox内运行其他应用程序的示例代码:运行一个PictureBox
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调用。我非常感谢任何建议。
谢谢:)
有很多限制到这个技巧,唯一的原因它的工作原理是为Windows 3.x程序提供兼容性。许多其他问题,由运行在浏览器选项卡上的Adobe软件很好地演示。一个这样的限制是,非升级的过程不被允许劫持高架的窗口。你必须先让自己升高。 – 2012-08-17 13:29:37
@HansPassant当提升主机进程时它不起作用。 – ken2k 2012-08-17 13:34:41
感谢您的回复。我尝试使用这一行:'Process1.startInfo.Verb =“runas”'。但是这也没有显示任何运气。 :( – 2012-08-17 16:50:30