winforms 在webform面板中定位另一个应用程序

kiz8lqtg  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(99)

导岗
How can I run another application within a panel of my C# program?
我在Webform的面板中运行应用程序。但是,应用程序的左上角未与面板的左上角对齐。
无论面板的大小如何,它总是在面板边缘和应用程序窗口之间显示很大的间隙。

的数据
我如何在面板中对齐侧边应用程序?
代码:

[DllImport("user32.dll")]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

private void Form1_Load(object sender, EventArgs e)
{
    ProcessStartInfo psi = new ProcessStartInfo("notepad.exe");
    psi.WindowStyle = ProcessWindowStyle.Minimized;
    Process p = Process.Start(psi);
    Thread.Sleep(500);
    SetParent(p.MainWindowHandle, panel1.Handle);
    CenterToScreen();
    psi.WindowStyle = ProcessWindowStyle.Normal;
}

字符串

ix0qys7i

ix0qys7i1#

多亏了Jimi,这真的很简单:

[DllImport("user32.dll")]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

[DllImport("user32.dll")]
internal static extern void MoveWindow(IntPtr hwnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);

private void Form1_Load(object sender, EventArgs e)
{
   ProcessStartInfo psi = new ProcessStartInfo("notepad.exe");
   Process p = Process.Start(psi);
   Thread.Sleep(500);
   SetParent(p.MainWindowHandle, panel1.Handle);
   MoveWindow(p.MainWindowHandle, 0, 0, panel1.Width, panel1.Height, true);
}

字符串

相关问题