2010-03-24 74 views
0

我想表现出从另一个过程1隐藏的形式被称为是:如何在process2中的窗体中显示process1中的窗体?

Process.Start(@"F:\MyOtherFormPath\MyOtherForm.exe",this.Handle.ToInt32()); 

正如你可以看到我传递的句柄数的隐藏表单的,我敢从调用“MyOtherForm” ,我用这个号码来获得一个句柄,并从我的“MyOtherForm”像这样显示被隐藏的形式:

Form newFrm = Form.FromHandle(new IntPtr(long.Parse(handleNumberOfMyHiddenForm))); 
newFrm.show(); 

但它没有工作,没有办法做到这一点。

P.S:它没有抛出任何异常。

thanx in advanced ..

回答

0

您传递的句柄在其他进程中无效。

为了完成你想要做的事情,你将不得不使用某种进程间通信方式。在.NET中,这可以被处理,例如使用WCF或.NET Remoting。

控制其他应用程序的另一种方法是使用P/Invoke或用户界面自动化(System.Windows.Automation命名空间)。

+0

感谢名单@divo但你可以PLZ举一个简单的例子来说明我如何使用它。?? :) – Dabbas 2010-03-24 16:13:20

1

你所要做的是不可能的,这是一个奇迹,你没有得到一个异常。窗口句柄在进程之间有效,只要它们在同一个会话中运行。但是Control.FromHandle()只能找到在调用它的过程中创建的控件。在你的情况下,它应该返回null。

制作中可见的其他过程的形式实际上是可能的,你必须P /使用SW_SHOWNORMAL调用ShowWindow()。访问pinvoke.net进行声明。使用Handle.ToInt64()可以在64位操作系统上正常工作。

相关问题