- PR -

■DOS窓を表示させないで、コマンドラインプログラムを実行するには?■

1
投稿者投稿内容
ゆか
ベテラン
会議室デビュー日: 2004/04/06
投稿数: 75
投稿日時: 2005-04-02 11:03
コマンドラインから起動するexeファイルを、VB.NETから実行しようとしています。
下記のようにすれば、DOS窓を最小化して起動できると思います。
ただ、実行中に画面の下部に黒いDOS窓の最小化された感じのものが
表示されてしまいます。
これを全く表示しないで、exeファイルを起動する方法はないのでしょうか?

Dim info As New System.Diagnostics.ProcessStartInfo

info.WorkingDirectory = "C:\\Tmp"
info.WindowStyle = ProcessWindowStyle.Minimized
info.FileName = "AAA.exe"
info.Arguments = "/d"
Dim p As System.Diagnostics.Process = System.Diagnostics.Process.Start(info)
p.WaitForExit()
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-04-02 11:17
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdiagnosticsprocessstartinfomemberstopic.asp

CreateNoWindowプロパティというのがあるような気がするのですが。。。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-04-02 11:20
RedirectStandardOutputを指定すれば、表示されなくなりません?
えムナウ
大ベテラン
会議室デビュー日: 2004/06/10
投稿数: 187
お住まい・勤務地: 東京
投稿日時: 2005-04-02 11:45
Process process = new Process();
process.StartInfo.FileName = "実行ファイル";
process.StartInfo.Arguments = "パラメーター";
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.Start();
process.WaitForExit( ) ;

C#ですが、上記プログラムで動作した実績があります。
_________________
えムナウ Microsoft MVP for Visual Developer - C#,2005/01-2007/12
えムナウのプログラミングのページ Blog1 Blog2
ゆか
ベテラン
会議室デビュー日: 2004/04/06
投稿数: 75
投稿日時: 2005-04-02 11:45
みなさんありがとうございます。

> RedirectStandardOutputを指定すれば、表示されなくなりません?
確認しました。現状のソースを多少変更しなければならないようです。

> CreateNoWindowプロパティというのがあるような気がするのですが。。。
これを試しましたが、なぜか動作は変わりません。

本当にDOS窓を出さないだけをしたいので、CreateNoWindowプロパティを
Trueにする、みたいな感じで修正したいのです。
でも、なぜCreateNoWindowプロパティがだめなのでしょうか?
ヘルプを読む限り完璧と思うのですが。。。


甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-04-02 12:43
CreateNoWindowは恐らくCreateProcessのCREATE_NO_WINDOWに相当します。CREATE_NO_WINDOWフラグは実行する対象がWindow Consoleアプリケーションで、OSはWindowsNT/2000系のとき以外は機能しないと明記されています。どちらかの条件を満たしていないのではないでしょうか?

RedirectStandardOutputは恐らくCreate ProcessのSTARTUPINFO構造体のhStdOutputに対応するのだと思います。こちらはCREATE_NO_WINDOWのように前提条件は無かったはず。
ゆか
ベテラン
会議室デビュー日: 2004/04/06
投稿数: 75
投稿日時: 2005-04-02 14:11
みなさん、ありがとうございます。
甕星さん、何度もありがとうございます。

process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
これでできました。

UseShellExecute が足りなかったようです。

1

スキルアップ/キャリアアップ(JOB@IT)