我想在面板中运行应用程序或在我的应用程序中运行某些东西。这是一个模拟器前端。您浏览游戏,然后当您选择一个游戏时,它会启动模拟器。我找到了以下代码并将其改编为我的项目
Public Class Form1
Declare Auto Function SetParent Lib "user32.dll" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As Integer
Declare Auto Function SendMessage Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Private Const WM_SYSCOMMAND As Integer = 274
Private Const SC_MAXIMIZE As Integer = 61488
Dim proc As Process
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
proc = Process.Start("C:\WINDOWS\notepad.exe")
proc.WaitForInputIdle()
SetParent(proc.MainWindowHandle, Panel1.Handle)
SendMessage(proc.MainWindowHandle, WM_SYSCOMMAND, SC_MAXIMIZE, 0)
End Sub
End Class
如果我用记事本尝试它,甚至 zsnesw.exe 它工作正常,但如果我尝试将一些参数传递给 zsnesw 它有点吓坏了,我必须重新启动我的计算机(我无法切换应用程序甚至打开任务经理)。
此外,即使它确实有效,开始菜单也会像我切换到另一个应用程序一样弹出。这是我一开始就试图避免的,因为我的应用程序是全屏的。