我有一个winform应用程序(.NET 2.0 C#).从这个应用程序,我想启动另一个进程(另一个winform应用程序)并将其停靠到我的窗口(或至少让它看起来像停靠).到目前为止,我只能找到有关对接控件的信息,而不是单独进程中的窗口.我的第一个想法是获取窗口的句柄并使用非托管系统调用来设置窗口的高度/宽度和位置到我的停靠区域.但在我开始之前,我想检查一下你们中是否有人做过类似的事情.我可以访问我想要停靠的应用程序的源代码,但如果可以避免它,我宁愿不做任何更改.我对父应用程序的完整编程控制.有什么建议?提前致谢!
我需要启动一些 Windows 应用程序才能在表单内运行。我正在使用 VS-15 IDE 在 C# 上开发 Windows 桌面应用程序。
这个话题在很多年前就已经被解决过。这是我找到的最好的答案:
然而,所有示例都涉及启动记事本,它工作正常。我确实可以在目标面板中以目标形式启动并运行记事本,并且工作完美。
但我不需要启动记事本,我需要启动其他已安装的应用程序,并且发现了令人沮丧的现实,即不可能在目标面板/表单内启动所需的应用程序。它只是在表单之外打开。
甚至发现一个OP需要启动IE的帖子,但同样的结果,IE在表单之外启动。
阅读和阅读相关主题,我发现使用称为EnumWindows的东西可能可以解决这个问题。我对 C# 很陌生,我通常使用 Python。我什至不是 Windows 本地人,必须将其安装在虚拟机中。
我正在使用 Visual Studio 2015。预期输出是 Windows 7 和 8 计算机(64 位)的桌面应用程序。
代码:
using System;
using System.Windows.Forms;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Threading;
namespace < >
{
public partial class Form1:
{
private void btn_qui_Click(object sender, EventArgs e)
{
var postventa = new appUser("POSTVENTA", "",3);
try
{
frm_3.Show();
Process p = Process.Start("C://QuiterWeb/QuiterWeb.exe");
p.WaitForInputIdle();
SetParent(p.MainWindowHandle, frm_3.panel_3.Handle);
}
catch …Run Code Online (Sandbox Code Playgroud) 我想在我的 Windows 窗体应用程序中打开进程。
例如,我希望当用户按下 Windows 窗体容器之一中的按钮时,mstsc.exe 将打开。
如果他按下按钮,它将在另一个容器上打开 IE,
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
private void button1_Click(object sender, EventArgs e)
{
Process p = Process.Start("mstsc.exe", @"c:\VPN4.rdp");
Thread.Sleep(3000);
p.StartInfo.CreateNoWindow = true; // new
SetParent(p.MainWindowHandle, this.panel1.Handle);
p.StartInfo.WindowStyle = ProcessWindowStyle.Maximized; //new
}
Run Code Online (Sandbox Code Playgroud)
它打开进程但不能在windows窗体中打开,,,
我有ac#powered windows form app,我想在其中运行一个exe.该程序是另一个单独的可执行文件.让我们说那个exe不是一个点网应用程序,但用另一种语言编写,这有关系吗?
所以我希望那个程序在我的winforms里面,我怎么能这样做?另外,我可以把它放在winforms的任何地方吗?是否有像默认情况下已包含的属性?谢谢.你试过这些吗?如果是这样,采取的步骤是什么?谢谢stackoverflow建立了一个很好的开发者社区.我真的很珍惜这一点