10

Process.Start()を使用してC#アプリから起動した後、ウィンドウのウィンドウハンドル(IntPtr)を取得する方法はありますか?

4

4 に答える 4

25

それがあなたが求めているメインウィンドウである場合、Process.MainWindowHandleあなたが必要とするものをあなたに与えるでしょう。

于 2009-09-14T12:14:23.163 に答える
8

使用する

process.MainWindowHandle;

アプリの起動時はおそらく 0 であるため、いっぱいになるまでループしてスリープすることをお勧めします。

于 2009-09-14T12:15:35.587 に答える
6

これは最近のトピックではありませんが、回答は不完全です。

私は Process.MainWindowHandle ソリューションに同意し、値を待つことに同意しますが、Sleep には同意しません。

プロセスを開始したばかりで、そのメイン ウィンドウ ハンドルを使用する場合は、WaitForInputIdle メソッドを使用してプロセスの開始を完了させ、メイン ウィンドウ ハンドルが作成されていることを確認することを検討してください。

Process.WaitForInputIdle

このオーバーロードは、ユーザー インターフェイスを持つプロセスにのみ適用されるため、メッセージ ループが発生します。

于 2016-05-16T13:49:27.443 に答える
2

プロセスで Refresh() を呼び出して、情報が正確であることを確認することもできます

于 2009-09-14T13:05:22.693 に答える