2010-03-24 101 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位操作系統上正常工作。

相關問題