VCからEXEを実行するにはどうしたら良いでしょうか?
ShellExecute(NULL,"open"c:\\Windows\\system32",NULL,"c:\\Windows\\system32",SW_SHOWNORMAL);
これで一応は起動できたのですが、ファイルの関連付けの必要のない
単体のEXEにShellExecuteを使うのは何か正しくないような気がしてしまい。
VBのようにShell("c:\\Windows\\system32")で起動するような方法は
できないものでしょうか?
また、パスをフルパスで指定している為に汎用性に掛けます。
Windowsフォルダとかにはパスが通っていると思いますので、
calc.exeとかで起動させるような方法も無いものでしょうか?
宜しくお願い致します。
>単体のEXEにShellExecuteを使うのは何か正しくないような気がしてしまい。
別にそんなことは無いと思います。
第4引数が"プログラムへの引数"なんですから。
>calc.exeとかで起動させるような方法も無いものでしょうか?
そのまま開くファイル名(第3引数)に"calc.exe"といれればいいのです。
#他のフォルダでもIEなどいくつかのプログラムはパスが無くても動くように設定されているはずです。
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にすると完全にフィリーズしてしまいます。
カレントディレクトリの指定をNULLにしたい。
ってコトでしょうか?
CreateProcess()だったら指定をNULLに出来るようですが。
(実際には呼び出し側のカレントディレクトリが設定されるようですが)
ただ…CreateProcess()の方が必要な引数等が多くなりますけど。
瀬戸っぷ さん
>カレントディレクトリの指定をNULLにしたい。
>ってコトでしょうか?
そういう事です。
CreateProcess()だと後始末が必要でしたよね?
それなのであんまり使いたくはないのですが。
ShellExecute(NULL,"open","calc.exe",NULL,NULL,SW_SHOWNORMAL);
これでできるんですね、何も気にせずに、
VCのプロジェクト名もcalc.exeにしてしまった為みたいです。
全く気が付きませんでした(^^;
またまた、解決チェックを入れるのを忘れてしまいました。
編集 削除