ShellExecuteで任意のEXEを実行させたい – プログラミング – Home

通知
すべてクリア

[解決済] ShellExecuteで任意のEXEを実行させたい


頃多
 頃多
(@頃多)
ゲスト
結合: 17年前
投稿: 4
Topic starter  

// 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です。
お願い致します。


引用未解決
トピックタグ
maru
 maru
(@maru)
ゲスト
結合: 17年前
投稿: 358
 

やりたい事は
1『任意の場所にある「Test_app.exe」』を起動することですか?
2『任意の場所にある「Test_app.exe」』を探すことですか?

1 そのパスをShellExecuteの第三引数に渡す。
2-1 ファイルを検索する関数(FileFindFirst等)を使用する。
2-2 (または)CFileDialog等でファイルダイアログを使用してユーザにファイルを指定させ
る。


返信引用
頃多
 頃多
(@頃多)
ゲスト
結合: 17年前
投稿: 4
Topic starter  

GetCurrentDirectory
 →呼び出し元プロセスのカレントディレクトリを取得する。

上記API関数を用いてパス指定が出来そうです。


返信引用
頃多
 頃多
(@頃多)
ゲスト
結合: 17年前
投稿: 4
Topic starter  

>maruさん
説明不足ですいません。
実行するアプリ、DLLファイル、DLLファイルのI/Fで叩く別のexe。
上記三つのファイルがあり、DLLから叩くexeのパス指定に悩んでおりました。

ですのでGetCurrentDirectoryで初期実行アプリのパスを取得し、
そこからの別のexeの階層は指定させることで解決できました。

わざわざ解答して頂いたのに申し訳ございません。


返信引用
maru
 maru
(@maru)
ゲスト
結合: 17年前
投稿: 358
 

DLLやEXEのパスを取得するならGetModuleFileNameの方が幸せになれるかも。
# EXEはカレントディレクトリにあるとは限りませんよ。


返信引用
頃多
 頃多
(@頃多)
ゲスト
結合: 17年前
投稿: 4
Topic starter  

GetModuleFileNameの方がやりたいことに近いかも。。。
こちらを用いて実行します。
ありがとうございます!


返信引用
maru
 maru
(@maru)
ゲスト
結合: 17年前
投稿: 358
 

読んでいる人が誤解するといけないので、...

> DLLやEXEのパスを取得するならGetModuleFileNameの方が幸せになれるかも。
先頭に「現在、実行中の」を付けてください。
GetModuleFileNameはハンドルからファイル名を取得するので、ハンドルが不明なもの
(=メモリにロードされていないもの、実行中で無いもの)のファイル名は取得出来ません。

# 蛇足かな。


返信引用
と
 と
(@と)
ゲスト
結合: 20年前
投稿: 33
 

リアルタイムでそれ調べてました。
ドライブとパスを取得するにはsplitpath関数で
ドライブ名とパスをくっつければいけると思います。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました