質問:
どのように統合できますか? C# プログラムを起動するのではなく、C# プログラムの指定されたパネル内で別のアプリケーションを実行する外部的には?
答え:
はい。 win32 API を利用すると、C# プログラム内で別のアプリケーションを「使用」できます。これには、外部アプリケーションのトップ ウィンドウ ハンドルを取得し、その親ウィンドウを指定されたパネルに設定することが含まれます。統合をさらに強化するには、ウィンドウ スタイルを調整してサイズを最大化し、タイトル バーを削除して、MDI (Multiple Document Interface) 効果を排除できます。
これは、ファイル内での埋め込みプロセスを示す簡略化されたコード スニペットです。ボタンとパネルを含むフォーム:
using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Threading; using System.Windows.Forms; namespace EmbedApplication { public partial class Form1 : Form { [DllImport("user32.dll")] static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { // Launch the external application Process p = Process.Start("notepad.exe"); // Allow the process to initialize its window Thread.Sleep(500); // Embed the application within the panel SetParent(p.MainWindowHandle, panel1.Handle); } } }
または、スリープ遅延の代わりに WaitForInputIdle メソッドを使用して、外部プロセスをパネル内に埋め込む前に、外部プロセスが完全に初期化されていることを確認してください:
p = Process.Start("notepad.exe"); p.WaitForInputIdle(); SetParent(p.MainWindowHandle, panel1.Handle);
このトピックに関するさらなる洞察と包括的な記事については、次のリソースを参照してください:
以上が外部アプリケーションを C# パネルに埋め込むにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。