こんにちは私は韓国初心者の開発者です。C#フォームパネルに他のプログラムを開く
私は作っています。プログラム。プログラムは3つのexe(C++で開発されたC#)を1つの形式で実行し、プログラムをパネルに挿入します。
私はこのプログラムをC++や他の言語でパネルに入力しました。ただし、C#で構築されたWindowsプログラムはパネル上に保持されません。 は、ここに私のコードの一部です:私は今、二つのパネルを使用していた
[DllImport("user32.dll")]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
[DllImport("user32.dll")]
static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
[DllImport("user32.dll")]
static extern bool MoveWindow(IntPtr Handle, int x, int y, int w, int h, bool repaint);
static readonly int GWL_STYLE = -16;
static readonly int WS_VISIBLE = 0x10000000;
private void Form1_Load(object sender, EventArgs e)
{
try
{
Process p = Process.Start("C:\\Users\\sonmi\\OneDrive\\Japan_Bunge_alpha\\Japan_Bunge_alpha\\bin\\Debug\\Japan_Bunge_alpha"); //C# program
Process p2 = Process.Start("C:\\Users\\sonmi\\Desktop\\astana_test\\astana\\Server\\Server_CES"); //C++ program
p.WaitForInputIdle();
Thread.Sleep(100);
SetParent(p.MainWindowHandle, this.Handle);
SetWindowLong(p.MainWindowHandle, GWL_STYLE, WS_VISIBLE);
MoveWindow(p.MainWindowHandle, 0, 0, panel1.Width, panel1.Height, true);
p2.WaitForInputIdle();
SetParent(p2.MainWindowHandle, panel2.Handle);
SetWindowLong(p2.MainWindowHandle, GWL_STYLE, WS_VISIBLE);
MoveWindow(p2.MainWindowHandle, 0, 0, panel2.Width, panel2.Height, true);
}
が、このテストが終わった後、私はより多くを追加します。 問題がどこにあるか分かりません。
あなたの 'catch'ブロックには何がありますか?何かエラーがありますか?管理者として試してみましたか? – derloopkat