- - PR -
System.Environment.ExitCodeの使い方
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-12-02 17:14
また、質問ですが宜しくお願いします。
VB.NETでWindowsアプリケーションを作っています。 Microsoft.VisualBasic.Commandでコマンドを取得し、例えばコマンドがOFFと言う文字列ならバッチ動作として画面やメッセージボックスを表示させない。ONならば画面有りのメッセージ有りの処理が動く様にしています。 上記の処理自身は正しく動作しているのですがバッチ動作の時(.BAT)、System.Environment.ExitCodeを使えばERRORLEVELで判定できると思い、処理結果が異常の場合、System.Environment.ExitCodeに1を設定し、正常なら0を設定する様にしていますが、異常が発生してもERRORLEVELは1以外の時の動作と成ってしまいます。 デバックモードで調べると、最後までSystem.Environment.ExitCodeの値は1と成っていました。ぺルプを見るとSystem.Environment.ExitCodeは「指定されている終了コードを基になるオペレーティング システムに渡します。」と成っているのですが使い方が悪いのでしょうか! また、System.Environment.ExitCodeでは、ERRORLEVELに値を渡せない場合、何か良い方法は無いでしょうか? 以上 因みにバッチは次の様な機術をしています。 C:\EXE\WinApp100.EXE OFF IF NOT ERRORLEVEL = 1 GOTO SKIP echo >>処理が中断されました。ログファイルおよびエラーログファイルを確認して下さい。 PAUSE echo **** 処理は異常終了しました。 **** GOTO END :SKIP echo **** 処理は正常終了しました。 **** :END | ||||||||
|
投稿日時: 2003-12-02 18:17
恐らく Windows アプリケーションがバックグラウンドプロセスで実行されているため、
その終了コードを取ることができないのだと思われます。 OS は Windows 2000 もしくは XP ですか? もし、そうだとしたら
を
とするとどうでしょうか? #もしくは、コンソールアプリケーションにするか。 | ||||||||
|
投稿日時: 2003-12-02 18:57
早々有難う御座います。
OSはWindows2000を使っています。 因みに.NETは2002でFrameWorkは1.03です。 アクセサリのコマンドプロンプトから.BATを起動して試しているのですが、教えていただきましたようにCMDに変えてやって見たのですが残念ながら同じ結果でエラーが起きているのにエラーの表示の方に飛びませんでした。 以上 | ||||||||
|
投稿日時: 2003-12-02 22:25
う〜ん、私も試しに作って実行したらきちんと取得できたのですが。。。
一度、コマンドプロンプトから CMD コマンドを使ってその Windows アプリケーションを実行した後、
を実行してみてください。 それで表示された値が予想通りの結果にならない場合はその Windows アプリケーションが 原因なのですが、そうなると今はちょっと分かりません(申し訳ないのですが)。。。 # System.Environment.ExitCode の値を設定するタイミングとか・・・?^^; #もしくは、Windows アプリケーションが終了する直前で
#というふうにしてみるとか・・・。 #ちなみに私の環境は # OS : Windows 2000 # IDE : VS.NET 2003 # SDK : .NET Framework 1.1 [ メッセージ編集済み 編集者: 架空兎 編集日時 2003-12-02 22:33 ] | ||||||||
|
投稿日時: 2003-12-02 23:54
%ERRORLEVEL%で確認した所、0が返っていました。
従って、プログラム上の問題のようです。 ただ、スタート時点で行き成りEXITCODEに2をセットして終わらしても0が返ります。終らせ方はENDステートメントですがENDだと0が返ると言うことは? 因みに架空兎さんは正しく動いたとの事ですがコードセット後はどの様に終らせてますか? | ||||||||
|
投稿日時: 2003-12-03 00:19
度々済みません。
System.Environment.Exit(1) を使って見た所、1を取得出来ました。 Endステートメントで終らせていたことが原因でしょうか! 以上 | ||||||||
|
投稿日時: 2003-12-03 01:03
どうやら End ステートメントが原因みたいですね。。。 #確かに 0 が返りました。
Main プロシージャを抜けるか、もしくはスタートアップフォームを閉じただけです。 # End ステートメントは使いませんでした。 とりあえず End ステートメントを使わないようにするだけでいいと思います。 [ メッセージ編集済み 編集者: 架空兎 編集日時 2003-12-03 01:05 ] | ||||||||
|
投稿日時: 2003-12-03 08:58
全て初期化されるそうです。初期化対象かな? [ メッセージ編集済み 編集者: Jitta 編集日時 2003-12-03 08:59 ] |