c# process调用setparent 不管用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# process调用setparent 不管用相关的知识,希望对你有一定的参考价值。

在panel中的mfc程序显示图像一下,就一闪而过,然后panel中的mfc程序就不见了。如何让mfc显示图像的同时,还嵌在panel中,不要一闪而过?
代码如下:
private void btn_OneScreen_Click(object sender, EventArgs e)
panel1.Controls.Clear();
Panel panelone = new Panel();
panelone.Width = panel1.Width;
panelone.Height = panel1.Height;
panelone.Left = panel1.Left;
panelone.Top = panel1.Top;
panelone.BackColor = Color.Black;
panel1.Controls.Add(panelone);
panelone.Dock = DockStyle.Fill;
string path = System.Windows.Forms.Application.StartupPath;

this.exeName = path + "\\Server.exe";
try
// Start the process

process = System.Diagnostics.Process.Start(this.exeName);
// Wait for process to be created and enter idle condition
process.WaitForInputIdle();

// Get the main handle
appWin = process.MainWindowHandle;

catch (Exception ex)

MessageBox.Show(this, ex.Message, "Error");


// Put it into this form
SetParent(appWin, panel1.Handle);

// Move the window to overlay it on this window MoveWindow(appWin, 0, 0, panel1.Width, panel1.Height, true);
//panelone.DoubleClick += new EventHandler(panelone_DoubleClick);

参考技术A

 tbResult.Text = "";

            ProcessStartInfo start = new ProcessStartInfo("Ping.exe");//设置运行的命令行文件问ping.exe文件,这个文件系统会自己找到

            //如果是其它exe文件,则有可能需要指定详细路径,如运行winRar.exe

            start.Arguments = txtCommand.Text;//设置命令参数

            start.CreateNoWindow = true;//不显示dos命令行窗口

            start.RedirectStandardOutput = true;//

            start.RedirectStandardInput = true;//

            start.UseShellExecute = false;//是否指定操作系统外壳进程启动程序

            Process p=Process.Start(start);

            StreamReader reader = p.StandardOutput;//截取输出流

            string line = reader.ReadLine();//每次读取一行

            while (!reader.EndOfStream)

           

                tbResult.AppendText(line+" ");

                line = reader.ReadLine();

           

            p.WaitForExit();//等待程序执行完退出进程

            p.Close();//关闭进程

            reader.Close();//关闭流

C#中怎么用process调用一个exe文件并传入参数?


System.Diagnostics.Process.Start("程序的路径", "参数1 参数2");
第一个参数是aaa.exe 的路径,第二个参数是用空格分开的两个参数组成的字符串。
aaa.exe中的main方法写做
static void Main(string[] args)
用Process.Start启动aaa.exe时main方法的args参数就是Process.Start传入参数用转换成的长度为2的数组

代码如下 调exe的写法:

static void Main(string[] args)
{
System.Diagnostics.Process.Start(@"E:\SouceCode\WindowsFormsApplication1 - 副本\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe", "参数1 参数2");
}

 

被调的写法:

static void Main(string[] args)
{
if (args.Length > 0)
{
string canshu1 = args[0];
string canshu2 = args[1];
MessageBox.Show(canshu1);
MessageBox.Show(canshu2);
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}

 

以上是关于c# process调用setparent 不管用的主要内容,如果未能解决你的问题,请参考以下文章

调用 setParent 时 QMenu 显示不正确

使用 SetParent 冻结父窗口

C#使用Process类调用外部程序(转)

调用 System.Diagnostics.Process.GetProcesses() 未返回 C# 最小化窗口

C#中怎么用process调用一个exe文件并传入参数?

C#中怎么用process调用一个exe文件并传入参数?