色の知識で人生の可能性が広がる!みんなに役立つ色彩検定 >>

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

教えて!goo グレード

A 回答 (4件)

#1です。

こちらで作成したサンプルです。
呼び出し側
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
intret;
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[])
{
inti;
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
---------------------------
    • good
    • 1
この回答へのお礼

最近多忙で、今日まで試すことが出来ませんでした。
お礼が遅れてしまい申し訳ないです。

ご指摘いただいたとおりに出来ました。
ありがとうございます。

お礼日時:2008/08/24 22:42

#1です。


system("\"C:\\test.exe\""); ではなく
system("C:\\test.exe"); でよいはずです。

引数を持たせる場合は、
system("\"C:\\test.exe hoge\"");ではなく
system("C:\\test.exe hoge");とします。
これで、どうなりますか?
    • good
    • 0
この回答へのお礼

最近多忙で、今日まで試すことが出来ませんでした。
お礼が遅れてしまい申し訳ないです。

こう指定した方がよいと目にしたものですから・・・
でも普通にフルパスしていでも出来るんですね。
ありがとうございました。

お礼日時:2008/08/24 22:43

私はShellExecuteを使ってます.


ShellExecute(NULL, "open", 実行ファイルへのパス, 引数, NULL, SW_SHOWNORMAL);
調べてみるとCreateProcessやら色々方法があるみたいですね.
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng. …

あとは私はsystem関数は知らないのですが”が二重もいらないのではないでしょうか?
http://detail.chiebukuro.yahoo.co.jp/qa/question …
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/08/24 22:46

system関数を使用するのが、最も簡単な方法です。


詳細は、VCのヘルプをみてください。

この回答への補足

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

また、引数を持たせる場合も
system("\"C:\\test.exe hoge\"");
とすればよいのでしょうか?

知識不足で申し訳ありません。

補足日時:2008/08/10 23:27
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング