VCからEXEの実行

解決


HIKARU  2003-09-04 09:10:49  No: 52074  IP: [192.*.*.*]

VCからEXEを実行するにはどうしたら良いでしょうか?

ShellExecute(NULL,"open"c:\\Windows\\system32",NULL,"c:\\Windows\\system32",SW_SHOWNORMAL);

これで一応は起動できたのですが、ファイルの関連付けの必要のない
単体のEXEにShellExecuteを使うのは何か正しくないような気がしてしまい。

VBのようにShell("c:\\Windows\\system32")で起動するような方法は
できないものでしょうか?

また、パスをフルパスで指定している為に汎用性に掛けます。

Windowsフォルダとかにはパスが通っていると思いますので、
calc.exeとかで起動させるような方法も無いものでしょうか?

宜しくお願い致します。

編集 削除
fuku  2003-09-04 11:20:03  No: 52075  IP: [192.*.*.*]

>単体のEXEにShellExecuteを使うのは何か正しくないような気がしてしまい。
別にそんなことは無いと思います。
第4引数が"プログラムへの引数"なんですから。

>calc.exeとかで起動させるような方法も無いものでしょうか?
そのまま開くファイル名(第3引数)に"calc.exe"といれればいいのです。
#他のフォルダでもIEなどいくつかのプログラムはパスが無くても動くように設定されているはずです。

編集 削除
HIKARU  2003-09-04 11:52:10  No: 52076  IP: [192.*.*.*]

fuku さん

ごめんなさい、先ほどの投稿が間違っていましたm(__)m

ShellExecute(NULL,"open","calc.exe",NULL,"c:\\Windows\\system32",SW_SHOWNORMAL);

このようにしていました、ここで、
ShellExecute(NULL,"open","calc.exe",NULL,NULL,SW_SHOWNORMAL);
のようにはパスを省略してできないでしょうか?

という事をお聞きしたかったのですが、コピペミスでした。

尚、上記のそれで第5引数をNULLにすると完全にフィリーズしてしまいます。

編集 削除
瀬戸っぷ  2003-09-04 12:57:55  No: 52077  IP: [192.*.*.*]

カレントディレクトリの指定をNULLにしたい。
ってコトでしょうか?

CreateProcess()だったら指定をNULLに出来るようですが。
(実際には呼び出し側のカレントディレクトリが設定されるようですが)
ただ…CreateProcess()の方が必要な引数等が多くなりますけど。

編集 削除
HIKARU  2003-09-04 13:52:40  No: 52078  IP: [192.*.*.*]

瀬戸っぷ さん

>カレントディレクトリの指定をNULLにしたい。
>ってコトでしょうか?

そういう事です。

CreateProcess()だと後始末が必要でしたよね?
それなのであんまり使いたくはないのですが。

ShellExecute(NULL,"open","calc.exe",NULL,NULL,SW_SHOWNORMAL);

これでできるんですね、何も気にせずに、
VCのプロジェクト名もcalc.exeにしてしまった為みたいです。

全く気が付きませんでした(^^;

編集 削除
HIKARU  2003-09-04 13:53:31  No: 52079  IP: [192.*.*.*]

またまた、解決チェックを入れるのを忘れてしまいました。

編集 削除