パネル内またはアプリケーション内の何かでアプリを実行したいと考えています。エミュレータのフロントエンドです。ゲームをブラウズし、ゲームを選択するとエミュレーターが起動します。次のコードを見つけて、自分のプロジェクトに適応させました
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 にいくつかのパラメーターを渡そうとすると、ちょっとおかしくなり、コンピューターを再起動する必要があります (アプリケーションを切り替えたり、タスクを開くことさえできません)。マネジャー)。
また、動作していても、別のアプリに切り替えたようにスタートメニューがポップアップします。これは、私のアプリが全画面表示であるため、そもそも回避しようとしていたことのようなものです。