4

別のコンソール アプリケーションを新しいプロセスとして起動するコンソール アプリケーションを記述し、既定の "UseShellExecute" および "CreateNoWindow" 値を使用すると、コンソール アプリケーションのウィンドウの隣に新しいコマンド ライン ウィンドウが表示されます。

   UseShellExecute=true and CreateNoWindow=false

以下を使用すると、新しいウィンドウは作成されませんが、起動されたプロセスの出力は、それを起動したアプリケーションのウィンドウに表示されます。

   UseShellExecute=false and CreateNoWindow=false

そして、次を使用した場合、新しいウィンドウは作成されず、起動されたプロセスの出力は、それを起動したアプリケーションのウィンドウに表示されません。

   UseShellExecute=false and CreateNoWindow=true

しかし、UseShellExecute=true の場合、"CreateNoWindow" は効果がないように見えますが、UseShellExecute=true の場合、"CreateNoWindow" はどのような役割を果たしますか? 新規プロセスとして起動したアプリケーションが Forms アプリケーションの場合のみ適用されますか?

4

1 に答える 1

4

それは何の役割も果たしません。規則では、CreateNoWindow は次の場合にのみ効果があります。

  1. UseShellExecute = false を使用して、CreateProcess() winapi を使用してプログラムを開始します。
  2. 起動するプログラムは、コンソール モード アプリケーションです。

アプリが独自のウィンドウを作成するネイティブ Windows GUI アプリである場合は、WindowStyle = ProcessWindowStyle.Hidden を使用して、可視ウィンドウを作成しないようにアプリに要求できます。ただし、この要求を無視するプログラムはたくさんあります。彼らはすべきです、それを止める唯一の方法はタスクマネージャーを使うことです. 次の妥当な選択は ProcessWindowStyle.Minimized です

于 2013-03-31T21:04:27.670 に答える