任意フォルダ内のファイルをメニュに表示するには?

[戻る]
Hot 2002/09/29(日) 01:17:24
はじめてランチャソフトを作っているのですが、実行ファイルの表示のところでつまず
いています。
任意フォルダ(マイドキュメント内のAフォルダなど)内に格納した実行ファイル(不定
数)をメニュに表示(アイコン+ファイル名)するという仕様にしたいのですが、その
作成手順が全くわかりません..。作成手順の概略をご教授願えないでしょうか。よろし
くお願いします。

現在、起動アイコンをタスクトレイに格納して、その起動アイコンを左クリックするこ
とでダミーの実行ファイル名(4個)を表示するところまでできているのですが..。


アプリ:ランチャソフト
OS:WIN2000
開発ソフト:VC++6.0
言語:C言語(SDK)のみ

MASATO [E-Mail] [HomePage] 2002/09/29(日) 13:31:46
わからないのは、以下の3点でしょうか。

(1) 任意フォルダの指定方法
(2) 実行ファイルのパス取得方法
(3) 実行ファイルのアイコン取得方法

(1)
任意フォルダは、だれの任意か(開発者の任意か、ユーザの任意か)
わからないので方法は省略します。

(2)
FindFirstFile,FindNextFile,FindCloseを使えば
ファイル名が "*.exe" とマッチするファイルパスが取得できます。
つまりは任意のフォルダの実行ファイル一覧が取得できるます。

(3)
SHGetFileInfoに(2)で求めたファイルのパスを渡せばアイコンが取得できます。

Hot 2002/09/29(日) 21:48:26
ありがとうございます。作成手順を理解できました。

サイト等でも調べたのですが、
(1) 任意フォルダの指定方法(ユーザの任意)を予定しています。できれば、フォルダ選
択ダイアログを起動して、lpItemIDList=SHBrowseForFolder(&binfo)から 
SHGetPathFromIDList(lpItemIDList,filename)で任意フォルダのフルパスを取得したい
と思います。
この辺は大丈夫なのですが、(2)のhFind=FindFirstFile("*.exe",&wfd))
==INVALID_HANDLE_VALUEへどのように移行すればいいのかわかりません。ご教授お願い
できないでしょうか。よろしくお願いします。

MASATO [E-Mail] [HomePage] 2002/09/30(月) 04:01:24
フォルダのパスは求まっても、
FindFirstFileの第一引数をどのように指定すればいいか分からない、
ということですか?

それでしたら方法は2つあります。
(1)
SetCurrentDirectoryにフォルダのパスを渡せば、
FindFirstFileの第一引数は"*.exe"を指定すれば実行ファイルを探せます。

(2)
_tmakepathを使います。
フォルダのパスが格納された変数をpath(CString型かLPCTSTR型を仮定)とします。
-----
TCHAR exepath[MAX_PATH];
_tmakepath(exepath, NULL, path, "*", "exe");
-----
これで得られたexepathを、FindFirstFileに第一引数として渡せば
実行ファイルを探せるでしょう。

Hot 2002/09/30(月) 10:24:13
[[解決]]
無事に解決することができました。
MASATOさん。どうもありがとうございます。
手間を省けるので(1)SetCurrentDirectory関数の方法でやらせて頂きます。
なんかモヤモヤが取れてスッキリしました。
解決欄にチェック入れておきます。
それでは...(^^)/

Hot 2002/09/30(月) 10:38:04
すいません。部分的な解決で解決チェックいれてしまいました。アイコン表示などで作
業継続中なので、また疑問点がでればご教授お願いします。

古いスレッドには追加発言できません。