• ベストアンサー

VC++から引数付きexeファイルの実行

タイトルの通り、VC++から外部ファイルを実行したいのですがどのような関数を使えばよいのでしょうか? exeファイルを実行中は親プロセスであるVCのプログラムの方を止めておきたいのです。 出来ればexeファイルは引数付きで実行したいと思いますので、よろしくお願いします。 開発環境はVisualStudio2005です。

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

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.4

#1です。こちらで作成したサンプルです。 呼び出し側 #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { int ret; printf("system試験開始\n"); ret = system("C:\\VCSTUDY\\printarg\\Debug\\printarg.exe XXX YYY ZZZ"); if (ret == 0){ printf("system成功\n"); }else{ printf("system失敗\n"); } return 0; } ---------------------- 呼び出される側(c:\\test.exeに相当) #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { int i; for (i = 0; i < argc; i++){ printf("ARGV[%d]=%s\n",i,argv[i]); } return 0; } 以下、実行結果です。 コマンドプロンプト画面に下記の文字が出力されます。 ------------------------ system試験開始 ARGV[0]=C:\VCSTUDY\printarg\Debug\printarg.exe ARGV[1]=XXX ARGV[2]=YYY ARGV[3]=ZZZ system成功 Press any key to continue ---------------------------

skk004
質問者

お礼

最近多忙で、今日まで試すことが出来ませんでした。 お礼が遅れてしまい申し訳ないです。 ご指摘いただいたとおりに出来ました。 ありがとうございます。

その他の回答 (3)

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

#1です。 system("\"C:\\test.exe\""); ではなく system("C:\\test.exe"); でよいはずです。 引数を持たせる場合は、 system("\"C:\\test.exe hoge\"");ではなく system("C:\\test.exe hoge");とします。 これで、どうなりますか?

skk004
質問者

お礼

最近多忙で、今日まで試すことが出来ませんでした。 お礼が遅れてしまい申し訳ないです。 こう指定した方がよいと目にしたものですから・・・ でも普通にフルパスしていでも出来るんですね。 ありがとうございました。

回答No.2

私はShellExecuteを使ってます. ShellExecute(NULL, "open", 実行ファイルへのパス, 引数, NULL, SW_SHOWNORMAL); 調べてみるとCreateProcessやら色々方法があるみたいですね. http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200204/02040061.txt あとは私はsystem関数は知らないのですが”が二重もいらないのではないでしょうか? http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1410020789

skk004
質問者

お礼

ShellExecuteも使ってみたのですが、何かが間違っていたようで実行できませんでした。 しかし、systemで上手く出来たのでこちらを使おうと思います。 ありがとうございました。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

system関数を使用するのが、最も簡単な方法です。 詳細は、VCのヘルプをみてください。

skk004
質問者

補足

system関数は既に試して見たのですが、できませんでした。 状況としては、system関数は絶対パスを指定することでも外部ファイルの起動ができるということで、 外部のテキストファイルにメッセージを出力するだけのプログラム"test.exe"を system("\"C:\\test.exe\""); としたのですがプログラムを起動するとcmd.exeの画面が出てくるのみです。 また、引数を持たせる場合も system("\"C:\\test.exe hoge\""); とすればよいのでしょうか? 知識不足で申し訳ありません。