はじめてランチャソフトを作っているのですが、実行ファイルの表示のところでつまず
いています。
任意フォルダ(マイドキュメント内のAフォルダなど)内に格納した実行ファイル(不定
数)をメニュに表示(アイコン+ファイル名)するという仕様にしたいのですが、その
作成手順が全くわかりません..。作成手順の概略をご教授願えないでしょうか。よろし
くお願いします。
現在、起動アイコンをタスクトレイに格納して、その起動アイコンを左クリックするこ
とでダミーの実行ファイル名(4個)を表示するところまでできているのですが..。
アプリ:ランチャソフト
OS:WIN2000
開発ソフト:VC++6.0
言語:C言語(SDK)のみ
わからないのは、以下の3点でしょうか。
(1) 任意フォルダの指定方法
(2) 実行ファイルのパス取得方法
(3) 実行ファイルのアイコン取得方法
(1)
任意フォルダは、だれの任意か(開発者の任意か、ユーザの任意か)
わからないので方法は省略します。
(2)
FindFirstFile,FindNextFile,FindCloseを使えば
ファイル名が *.exe とマッチするファイルパスが取得できます。
つまりは任意のフォルダの実行ファイル一覧が取得できるます。
(3)
SHGetFileInfoに(2)で求めたファイルのパスを渡せばアイコンが取得できます。
ありがとうございます。作成手順を理解できました。
サイト等でも調べたのですが、
(1) 任意フォルダの指定方法(ユーザの任意)を予定しています。できれば、フォルダ選
択ダイアログを起動して、lpItemIDList=SHBrowseForFolder(&binfo)から
SHGetPathFromIDList(lpItemIDList,filename)で任意フォルダのフルパスを取得したい
と思います。
この辺は大丈夫なのですが、(2)のhFind=FindFirstFile(*.exe,&wfd))
==INVALID_HANDLE_VALUEへどのように移行すればいいのかわかりません。ご教授お願い
できないでしょうか。よろしくお願いします。
フォルダのパスは求まっても、
FindFirstFileの第一引数をどのように指定すればいいか分からない、
ということですか?
それでしたら方法は2つあります。
(1)
SetCurrentDirectoryにフォルダのパスを渡せば、
FindFirstFileの第一引数は*.exeを指定すれば実行ファイルを探せます。
(2)
_tmakepathを使います。
フォルダのパスが格納された変数をpath(CString型かLPCTSTR型を仮定)とします。
-----
TCHAR exepath[MAX_PATH];
_tmakepath(exepath, NULL, path, *, exe);
-----
これで得られたexepathを、FindFirstFileに第一引数として渡せば
実行ファイルを探せるでしょう。
無事に解決することができました。
MASATOさん。どうもありがとうございます。
手間を省けるので(1)SetCurrentDirectory関数の方法でやらせて頂きます。
なんかモヤモヤが取れてスッキリしました。
解決欄にチェック入れておきます。
それでは...(^^)/
すいません。部分的な解決で解決チェックいれてしまいました。アイコン表示などで作
業継続中なので、また疑問点がでればご教授お願いします。