目的是在自己的程序中的一个控件里打开另外一个程序,这样那一个程序的位置就会固定在我们自己的控件里,不用两个程序相互切换了。用winform是可以实现的,代码如下:System.Diagnostics.Process.Process p = System.Diagnostics.Process.Start("C:\\Windows\\system32\\notepad.exe"); //notepad");
p.WaitForInputIdle();
SetParent(p.MainWindowHandle, panel1.Handle);
ShowWindowAsync(p.MainWindowHandle, 3);
当然还有缺陷,比如可以把里面的程序移动到边界外等。现在如果用WPF能否实现相同的功能?目前我无法获取控件的Handle

解决方案 »

  1.   

    wpf可以实现这样的功能
    以下是我 wpf调用winform的应用程序 
     string file = string.Format("{0}G2", System.AppDomain.CurrentDomain.BaseDirectory);
                  System.Diagnostics.ProcessStartInfo Info = new System.Diagnostics.ProcessStartInfo();
                  Info.FileName = "IVM_DVS_G2.exe";//设置外部程序名
                  string ip=dtDvs.Rows[0]["dvsIp"].ToString();
                  string port=dtDvs.Rows[0]["port"].ToString();
                  string useName=dtDvs.Rows[0]["userName"].ToString();
                  string password=dtDvs.Rows[0]["pwd"].ToString();
                  string args =  ip + ":" + port + ":" + useName + ":" + password;
                  Info.Arguments = args; //设置外部程序的启动参数
                  Info.WorkingDirectory = file; //设置外部程序工作目录
                  try
                  {
                      System.Diagnostics.Process.Start(Info); //启动外部程序
                  }
                  catch
                  {
                      MessagingBox mb = new MessagingBox("配置人脸失败区域失败,请检查G2设备配置程序是否在\\G2目录下", Helper.MessageImage.Information, false);
                      mb.ShowDialog();
                  }
                 但愿对你有帮助
      

  2.   


    非常感谢回帖支持,不过你的功能跟我需要的功能似乎不太一样。我的意思是窗口里有一个控件,把打开的程序定位在这个控件里(无论怎么拖动,都不会移出这个控件以外),而不是光打开另外一个程序。winform的简单示例如下:http://ys-c.ys168.com/?TestForSkype.exe_51bit0b8d7eikkt0bsqhtrnp0cmphtl0b5btrnpmrhu01f20f01z
      

  3.   

    你可以在WPF中承载WinForm控件,然后再用WinForm的实现方法
      

  4.   

    另外的程序是指一个已经存在的exe吗?
      

  5.   


    是的,比如QQ,Word,Skype,Msn之类的程序