gpt4 book ai didi

C# 在窗体面板中打开其他程序

转载 作者:太空宇宙 更新时间:2023-11-03 14:59:10 25 4
gpt4 key购买 nike

你好,我是韩国的初学者。

我在做。程序。程序在一个窗体上运行三个exe(c++、c#开发),将程序放到面板中。

现在我把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);


}

我现在已经使用了两个面板,但在这次测试结束后我会添加更多。我不知道问题出在哪里。

最佳答案

对于 C# 应用程序,您可以将应用程序加载到当前的 AppDomain 中,并将其视为一个库。为此,将其添加到您的项目引用中。如何初始化并将其放入面板取决于引用的应用程序的设计方式。

您可能必须自己初始化该应用程序的主窗体并以这种方式设置父窗体。

关于C# 在窗体面板中打开其他程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47120055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com