WinフォームをProcess.Startによってロードされたときにどのように知っていますか?

StackOverflow https://stackoverflow.com/questions/1177956

  •  19-09-2019
  •  | 
  •  

質問

私はWindowsFormの(C#の.NET 3.5)中だと、ボタンのクリックにProcess.Startを(使用して(も3.5を.NET)別の外部アプリケーション)を起動し、私はそれを立ち上げた後、それが利用可能なときに理解しています。

    ProcessStartInfo psInfo = new ProcessStartInfo(@"MyApplication.exe");
psInfo.RedirectStandardOutput = true;
psInfo.RedirectStandardError = true;
psInfo.UseShellExecute = false;
psInfo.CreateNoWindow = true;
Process proc = Process.Start(psInfo);

proc... IsFullyLoaded()?

どのように私はそれを行うことができますか?

役に立ちましたか?

解決

<のhref =「http://msdn.microsoft.com/en-us/library/system.diagnostics.process.waitforinputidle.aspx」のrel = "nofollowのを呼び出し、そのフォームを作成するプロセスを待つために、 noreferrer "> WaitForInputIdle の方法。

それは準備ができているかどうかを調べるには、これを試してください:

bool isReady = proc.WaitForInputIdle(0);

あるいは、

bool isReady = (proc.MainWindowHandle != IntPtr.Zero);

また、<のhref =「http://msdn.microsoft.com/en-us/library/ms644950%28VS.85%29.aspx」のrelを使用して、フォームにメッセージを送信するためにMainWindowHandleプロパティを使用することができます= "nofollowをnoreferrer"> SendMessage のAPI関数

他のヒント

あなたは、それが開始されたかを知らせるプロセスに引数を渡すことができます。

psInfo.Arguments = "-startedByProcess";

そして、それがリモートまたはそのような何かを経由して、開始している知っているように、所有者のプロセスに子プロセスコールバックを持っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top