2013-08-08 9 views
7

私が始めたプロセスのメインフォームを取得しようとしていますが、FromChildHandleとFromHandleは常にnullを返します。 MainWindowHandleはゼロ以外です。子プロセスのフォームを取得する

IntPtr p = process_wrapper.MainWindowHandle; 
Form form = (Form) Control.FromChildHandle(p); 
if (form != null) 
{ 
    form.Close(); 
} 

答えて

2

問題のフォームがアプリケーションによって生成されている場合、フォームはコントロールとしてのみ取得できます。親プロセスがハンドルを認識していないので、別のプロセスからフォームを取得することはできません< - >子プロセスの制御マッピング。

子プロセス(「form.close()?」)を「停止」したい場合は、完全なプロセスを簡単に停止できます。どちらの "クリーン"、または力によって:

process.CloseMainWindow()

+0

process.kill()対感謝。プロセスは私のアプリケーションから開始されます。それは子プロセスです。私は明示的にform.close()を呼び出して、それに特有のものをテストしたいと思います。 – clamp

+0

@clampプロセスがあなたのPARENTプロセスから呼び出されたとしても、それはフォームを作成している子プロセスであり、これは別のアプリケーションスコープの一部です。それで、ParentProcessからアクセスできないのです。 – dognose

+0

よろしくお願いいたします。このフォームを入手する方法はありませんか? – clamp

関連する問題