• ベストアンサー

戻り値をもつアプリケーション

こんにちは。 あるダイアログアプリケーションから、コンソールアプリケーションを起動させ、そのアプリケーションの処理結果をダイアログに表示させたいのです。 どのような方法があるのでしょうか?? int main()でreturnを使ったりするのでしょうか??? よろしくお願いします。

  • dole
  • お礼率35% (12/34)

質問者が選んだベストアンサー

  • ベストアンサー
  • hitomura
  • ベストアンサー率48% (325/664)
回答No.2

No.1のMarrowGさんに補足です。 コンソールアプリケーション側の処理としてはMarrowGさんのおっしゃる通りです。 でも、ダイアログアプリケーション側からどうやってコンソールアプリを実行し、その戻り値を取得できるか?という問題が解決していません。 この問題の答えはズバリsystem()関数です。system()の定義は  int system( const char *command ) となっています。 commandに実行したいコンソールプログラムを起動するコマンドを文字列として渡すと、system()関数の戻り値としてコンソールプログラムのリターンコードが帰ってきます。 ただし、コンソールプログラムの戻り値の中に-1があるとsystem()関数自体にエラーが発生した場合と区別がつかないため、-1をコンソールプログラムの戻り値として返すのはやめたほうがいいかもしれません。

参考URL:
http://www.microsoft.com/japan/developer/library/vccore/_crt_system.2c_._wsystem.htm

その他の回答 (1)

  • MarrowG
  • ベストアンサー率53% (41/76)
回答No.1

>int main()でreturnを使ったりするのでしょうか??? 正解です。(^^) void main()なら、exit()関数を使ってexit()関数のパラメータにリターンコードを渡してやればOKです。

関連するQ&A

  • 戻り値について

    ただ今、c言語の勉強をしている者です。 本を読んでいて分からないところがあったので ご指導して頂ければと書き込みました。 それは、最初と最後のところです。 int main(void) { ・ ・ 処理 ・ ・ return 0; >int main(void) このintというのは 戻り値が整数だと言うことだと思うのですが 戻り値が文字の場合ということも あるということですか? 例えば、 char main(void) ということもあるのでしょうか? また、voidというのは 他の名前にしたらいけないのでしょうか? > return 0; というのは、 正常に終わったら戻り値を0にしろということですか? ご指導して頂ければと思います

  • アプリケーションに戻り値を設定したい。

    C♯でアプリを作っています。 exeをバッチからキックして、実行結果の戻り値を取得したいと思っています。 (成功時0、エラー時-1) 現在、エントリポイントが [STATread] static void Main() { } となっていますが、これを static int Main() { int retVal=0; try { { catch (exception) retVal -1;l } Finally { return retVal; } のように変更すれば取得できるでしょうか? 稚拙な質問で申し訳ないですが、宜しくお願いします。

  • 関数の戻り値について

    初心者です。 char *inttochar(int numb); int main() { cout << inttochar(num); } char *inttochar(int numb) { char str[20]; ..... return str; } というように、「numb」に数値を代入して、 数字の文字列を返したいのですが、 (多分)アドレスしか表示がされないのです。 どうすればよいでしょうか?

  • .NETアプリケーションの戻り値

    .NET(C#)のコンソールアプリケーションを起動し、動作中にタスクマネージャから強制終了したときの戻り値について教えてください。 以下のサイト http://blogs.timberlandchapel.com/blogs/timberlandchapel/archive/2006/06/28/838.aspx には、強制終了時の戻り値は「-1073741510」とありました。 ところが実際にサンプルPGを作ってやってみたところ、戻り値は「1」となります。 PG的には単純にMainの中でSleepの1行だけしか書いておらず、 Sleep中にタスクマネージャからプロセスを終了しています。 サンプルPGの呼出は.batのファイルからです。 (1)事実として「1」が戻ってきているのですが、それが正しいのでしょうか? 正しいとして、何かドキュメントなど情報はありますでしょうか? (2)強制終了時に「-1073741510」を返すようにすることは可能でしょうか? ■環境 Windows Server 2003(x86) / Windows 7(x86) .NET 3.5 SP1

  • MFCをDLL化してコンソールアプリから起動

    MFCアプリケーション(プロジェクト作成でMFCアプリケーションを選択)をDLL化して、コンソールアプリケーションからこのMFCをマルチスレッドで起動する方法を教えてください。MFCが起動後、コンソールアプリケーションの処理は次に進行し、MFCは操作可能な状態(アイコンなどがクリック可能で、青丸クルクルにはならない)にしたいです。また、コンソールアプリケーションからもMFCが操作可能にしたいです(例えば、コンソールアプリからAと入力するとファイルのオープンダイアログが開く、、、とか)。

  • CreateProcessでコンソールアプリケーションを起動するには

    コンソールアプリケーションの中で、CreateProcess関数を用いて、自分自身のアプリケーションを起動したところ、次の結果になりました。 ・CreateProcess関数自体は成功する ・タスクマネージャで確認すると自分自身が2つ起動されている ただし、コンソールアプリケーションのウィンドウは1つしか開かず、そのウィンドウを2つのアプリケーションで共有しているかのように動作します(printfによるメッセージが2重に表示されるなど)。 使用言語はVC++ .NET 2008で、デバッガによる動作をさせています。 詳しい方、宜しくお願いします。

  • main関数の戻り値

    C言語のmain関数の戻り値はint型ですよね。 私もそういう決まりだと思って守ってきました。 しかし、「mainが戻り値を返すって、どこに返すの?」ということが、私は理解できていません。 私が調べたところでは、「ホスト実行環境」という言葉がこの問題に関係あるようですが、この言葉の意味はよくわからないですし、似た言葉で「ホスト環境」ということばがあるのですが意味も関係もわかりません。 これらは、OSとは違うと思うんですが、自信はありません。 それでも、ない知識を振り絞っていろいろ考えてみると、次のようなことらしいのですが、正しいでしょうか。 ・OSはプログラムの実行に先立ちホスト実行環境を作る。 ・静的記憶域のオブジェクトを初期化するのはホスト実行環境である。 ・関数が、main関数を呼ぶことは可能である。(以下では、main関数が関数から呼ばれる場合は除く。) ・main関数を呼ぶのは、ホスト実行環境が行なう。 ・main関数の中のreturnによってプログラムが終了するのと、exit関数でプログラムが終了することに違いはない。 ・main関数の戻り値は、ホスト実行環境に返される。 ・returnによってホスト実行環境に返される値は、int型である限りなんでもよい。 ・exitによってホスト実行環境に返される値は、int型である限りなんでもよい。 ・必ずexitで値が返されるならば、main関数の中にreturnはなくてもよい。 main関数からの戻り値をどうしようと構わないんだと思うんですが、皆さんの経験の中で、実例としてこういうふうに使われる、というのは何かないのでしょうか。 (ホスト実行環境に値が返される、といっても無視するのでは意味はないと思うのです。 その値の使用例としては、 0が返ってくると「プログラムは正常終了しました。」と表示するとか、0以外の値が返されると別のプログラムが走るとか、 そういうことだと思うんですが。)

  • main関数の戻り値について

    c言語において、main関数の戻り値は何を意味しているのですか。 また、void型にすれば、main関数の戻り値を書かなくても問題無いでしょうか。 また、関数はreturn文を書かなくても、最後まで処理を実行すると終了するらしいですが、void型にすれば、main関数でreturn文を書かなくても問題無いでしょうか。

  • scnafの戻り値を使って処理を中止したい。

    何も標準入力より入力しなかったとき、scanfの戻り値は-1なので、-1じゃないとき処理継続にしても 期待どおりの結果が得られませんでした。どうしたらよいでしょうか? #include <stdio.h> int main(void){ int i; int seisu[10]; i = 0; while (i < 10 && -1 != scanf("%d", &seisu[i])) { i++; } }

  • 関数の戻り値が複数ある場合

    C言語初心者です。 関数の戻り値を返す場合、return 変数名;と記述しますよね。 配列を返す場合、ポインタを使用しないで返すにはどうしたらいいですか? 例えば合計と平均を計算する関数があり その結果を配列に入れてmainに返すなど。 以前他の方の質問のコメントに 配列の要素が固定であれば、構造体にして返す方法もあります。 struct array { int x[10]; }; struct array func() {  struct array a;  ...  return a; } -- とあったのですが、構造体の要素が全てint型ならば 配列ではダメなのですか?