![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_09.png?e8efa67)
以下の環境でプログラミングを実施しています。
開発環境:Visual Studio 2005
言語:Visual C++
プロジェクト:MFCアプリケーション
OS:Windows XP Professional SP2
以下のようにコーディングを行い、任意の終了コードを指定しているつもりですが、
コマンドラインよりプログラム実行後、「echo %errorlevel%」を実行しても
0しか表示されずうまくいきません。
---------------------------------------------------------------------------
// 終了コード用グローバル変数
int g_nRetCode;
BOOL CXXXXXApp::InitInstance()
{
~~~省略~~~
CWinApp::InitInstance();
~~~省略~~~
g_nRetCode = Main(); // メイン処理
~~~省略~~~
return FALSE;
}
int CXXXXXApp::ExitInstance()
{
~~~省略~~~
CWinApp::ExitInstance();
return g_nRetCode;
}
---------------------------------------------------------------------------
上記開発環境で任意の終了コードを返すには、どのようにコーディングすれば
よいのでしょうか?
No.2ベストアンサー
- 回答日時:
すいません、映画観に行ってました。
結局、原因は(コーディングではなく)、コマンドラインからウィンドウアプリケーションを起動する場合、終了待ちしないということにあります。
start /wait exitCode.exe
の様に終了待ちして起動すれば
echo %errorlevel%
で返値が取れるはず。
ご回答ありがとうございます。
なるほど!終了待ちですか。
確かに実行後まだ処理が継続しているのにコマンドライン上では
プロンプトが次の入力を待っていました。
終了待ちをするにはアプリ実行時に上記のように
start /wait exitCode.exe
とするしかないのでしょうか?
Visual C++で処理がすべて終了するまで終了コードを
返さないように簡単にコーディングする方法は
ありませんでしょうか?
お礼の中での質問になってしまい申し訳ありません。
No.4
- 回答日時:
MFCで試したことはないのですが...
コンソールアプリとしてビルドすれば、期待通りのことができるかもしれません。
具体的には次のようにします。
1. main関数を作成し、main関数からWinMain関数を呼び出す。
2. オプションを修正し、コンソールアプリケーションとしてビルドする。
うまくいけば、コンソールアプリケーションですので、プログラムの終了まで待ってくれるはずです。
また、副次的な効果として、std::coutやstd::cinなどの標準入出力も使えるようになります。
ご回答ありがとうございます。
そんなテクがあったんですね。
けど、プログラム実行後にDOS窓が起動しちゃいませんでしょうか?
そうなると少し困ります・・・。
やはり呼び出すときに考慮するようにします。
ありがとうございました。
No.1
- 回答日時:
終了コードを返すコーディングは、質問者のコードで良いように思います。
ウチでも試してみましたが、この時のコードは、0になっているのではなくてERRORLEVEL にはセットされないようです。
(他のコマンドでERRORLEVELが変更された後、実行しても変化しないので)
しかし、
Dim oShell, ret
Set oShell = WScript.CreateObject ("WSCript.shell")
ret=oShell.run("exitCode.exe",5, true)
WScript.Echo ret
Set oShell = Nothing
のようなVBScript を試してみると、プログラムで設定したリターンコードが表示されるので、ちゃんと終了コード自体は返されているのが確認できます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】甲子園での思い出の残し方
「球場の砂を持って帰る」はもう古いと思った高校球児が、甲子園で負けた際に、思い出に残そうと思って行ったこと
-
SetWindowText関数について
C言語・C++・C#
-
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
CFileDialogの最初のディレクトリ設定
C言語・C++・C#
-
-
4
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
5
MFCアプリのコマンドラインでパラメータを使用した起動方法
C言語・C++・C#
-
6
リソースエディタでスタティックテキストの文字サイズの変更
C言語・C++・C#
-
7
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
8
CString から LPCTSTRの型に変換
C言語・C++・C#
-
9
regsvr32で登録された一覧を知りたい
UNIX・Linux
-
10
MFCダイアログボックスを最前面に表示
C言語・C++・C#
-
11
UpdateData( FALSE); による文字列データの表示更新(VC++6.0)
C言語・C++・C#
-
12
CStringの中から数字だけの場合と、その他が含まれる場合を識別する方法
C言語・C++・C#
-
13
CStringをwchar_tに変換したい
C言語・C++・C#
-
14
_tcscpy_s(wcscpy_s)の第二引数って
C言語・C++・C#
-
15
スレッドの安全な終了のさせ方
C言語・C++・C#
-
16
エディットボックスに入力されている文字列が、スペースだけで構成されているかどうか。
C言語・C++・C#
-
17
エディットコントロールでEnter押した時の動作
C言語・C++・C#
-
18
CEdit の内容が変わった時にメッセージを表示させたい
C言語・C++・C#
-
19
【MFC】Version情報の取得
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windowsプログラムのビジー状態...
-
Accessフォームからの外部アプ...
-
VB.NETでMessageBoxを表示した...
-
コンソールアプリケーションの...
-
イラストレーターCS4のシリアル...
-
VC++2010 画面なしのアプリケ...
-
実行時のコマンドプロンプトを...
-
自分自身を更新するプログラム
-
C# の OpenFileDialog
-
フレームワーク「4.8.1」で、[S...
-
VB.NETでフォームアクティブの...
-
Python-mailブラウザを開きたい
-
pccNTmon.exeとntrtscan.exeの違い
-
vcxprojファイルの修正法???
-
現在起動中のアプリケーション...
-
Vba アプリケーションが立ち上...
-
VBA初心者です。ExcelのVBAで他...
-
必須コンポーネントと起動条件...
-
Ctrl + P のメッセージ送信
-
何点かあるのですが・・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フレームワーク「4.8.1」で、[S...
-
Vba アプリケーションが立ち上...
-
コンソールアプリケーションの...
-
イラストレーターCS4のシリアル...
-
自分自身を更新するプログラム
-
VBSでのSendKeysでの画面の最小化
-
Windowsプログラムのビジー状態...
-
VB.NETでMessageBoxを表示した...
-
Accessフォームからの外部アプ...
-
vb6で異なるのプロジェクト間で...
-
VB6での二重起動(複数起動)の制...
-
MFCアプリケーションでの終了コ...
-
pccNTmon.exeとntrtscan.exeの違い
-
初回接続の遅い原因について
-
実行時のコマンドプロンプトを...
-
VB.NETでフォームアクティブの...
-
アプリケーションエラー 0xc00...
-
OSによるWinExecの動...
-
Console Applicationをタスクト...
-
WSH(VBScript)でアプリケーショ...
おすすめ情報