// Test_appを起動する
ShellExecute(NULL, open, C:\\Program Files\\TEST\\Test_app.exe,
NULL, NULL, SW_SHOW);
この場合は、起動アプリのパスを指定してありますが、
ユーザーの任意の場所にある「Test_app.exe」を探して起動する場合は
どのように実装するべきでしょうか?
(例えば各PCのデスクトップにあるTest_appを実行したい場合など・・・)
コンパイラはVC++2005、OSはXP ProのSPです。
お願い致します。
やりたい事は
1『任意の場所にある「Test_app.exe」』を起動することですか?
2『任意の場所にある「Test_app.exe」』を探すことですか?
1 そのパスをShellExecuteの第三引数に渡す。
2-1 ファイルを検索する関数(FileFindFirst等)を使用する。
2-2 (または)CFileDialog等でファイルダイアログを使用してユーザにファイルを指定させ
る。
GetCurrentDirectory
→呼び出し元プロセスのカレントディレクトリを取得する。
上記API関数を用いてパス指定が出来そうです。
>maruさん
説明不足ですいません。
実行するアプリ、DLLファイル、DLLファイルのI/Fで叩く別のexe。
上記三つのファイルがあり、DLLから叩くexeのパス指定に悩んでおりました。
ですのでGetCurrentDirectoryで初期実行アプリのパスを取得し、
そこからの別のexeの階層は指定させることで解決できました。
わざわざ解答して頂いたのに申し訳ございません。
DLLやEXEのパスを取得するならGetModuleFileNameの方が幸せになれるかも。
# EXEはカレントディレクトリにあるとは限りませんよ。
GetModuleFileNameの方がやりたいことに近いかも。。。
こちらを用いて実行します。
ありがとうございます!
読んでいる人が誤解するといけないので、...
> DLLやEXEのパスを取得するならGetModuleFileNameの方が幸せになれるかも。
先頭に「現在、実行中の」を付けてください。
GetModuleFileNameはハンドルからファイル名を取得するので、ハンドルが不明なもの
(=メモリにロードされていないもの、実行中で無いもの)のファイル名は取得出来ません。
# 蛇足かな。
リアルタイムでそれ調べてました。
ドライブとパスを取得するにはsplitpath関数で
ドライブ名とパスをくっつければいけると思います。