질문:
어떻게 통합할 수 있나요? C# 프로그램을 시작하는 대신 지정된 패널 내에서 별도의 응용 프로그램을 실행합니다. 외부적으로?
답변:
물론입니다. win32 API를 활용하면 C# 프로그램 내에서 다른 애플리케이션을 "사용"하는 것이 가능합니다. 여기에는 외부 응용 프로그램의 위쪽 창 핸들을 가져오고 해당 상위 창을 지정된 패널로 설정하는 작업이 포함됩니다. 통합을 더욱 강화하려면 창 스타일을 조정하여 크기를 최대화하고 제목 표시줄을 제거하여 MDI(다중 문서 인터페이스) 효과를 제거할 수 있습니다.
다음은 버튼과 패널이 포함된 양식:
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); } } }
또는 Sleep 지연 대신 WaitForInputIdle 메서드를 사용하여 다음을 보장할 수 있습니다. 외부 프로세스는 패널 내에 포함되기 전에 완전히 초기화됩니다.
p = Process.Start("notepad.exe"); p.WaitForInputIdle(); SetParent(p.MainWindowHandle, panel1.Handle);
이 주제에 대한 추가 정보와 포괄적인 기사를 보려면 다음 리소스를 참조하세요.
위 내용은 C# 패널에 외부 응용 프로그램을 포함하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!