2007年2月23日(金) 23時25分18秒 [C++ Builder]
特殊なフォルダのパスを取得するには
「マイドキュメント」とか「スタートアップ」とか「お気に入り」みたいな特殊なフォルダは、環境やユーザの設定によって位置が異なります。
なので、これらの特殊なフォルダにアクセスするプログラムを作る際には、パスを決め打ちで作るわけにはいかず、Windows側から取得する必要があります。
特殊なフォルダのパスを取得するには、SHGetSpecialFolderLocationとSHGetPathFromIDListを使います。
以下のよーな感じで。
char SpecialPath[MAX_PATH];
SHGetSpecialFolderLocation(Application->Handle, CSIDL_PERSONAL, &pidlist );
SHGetPathFromIDList( pidlist, SpecialPath );
上記は、「マイドキュメント」(=CSIDL_PERSONAL)のフルパスを取得する場合。
「CSIDL_PERSONAL」の部分をいろいろ変えると、いろんな特殊フォルダのパスが得られます。例えば、以下のよーなもの。
| CSIDL_PROGRAMS | Program Files |
| CSIDL_PERSONAL | マイドキュメント |
| CSIDL_FAVORITES | お気に入り |
| CCSIDL_STARTUP | スタートアップ |
| CSIDL_RECENT | 最近使ったファイル |
| CSIDL_SENDTO | 送る |
| CSIDL_BITBUCKET | ごみ箱 |
| CSIDL_STARTMENU | スタートメニュー |
| CSIDL_DESKTOPDIRECTORY | デスクトップ |
| CSIDL_COMMON_STARTMENU | All Usersのスタートメニュー |
| CSIDL_COMMON_STARTUP | All Usersのスタートアップ |
| CSIDL_COMMON_DESKTOPDIRECTORY | All Usersのデスクトップ |
| CSIDL_WINDOWS | Windowsフォルダ |
こんな感じでいろいろあります。
もっとたくさん定義されてるんだけど、書いてられないので省略。(^_^;)
まあ、私が使いそうなのはこれくらいかなと。
これらの定義は、Borland C++ BuilderフォルダのIncludeフォルダ内にある shlobj.h ヘッダファイルの1705行目から記述されてますので、そこを参照しましょう。
この日記へのコメントはお気軽に! コメント数:0 トラックバック数:0
| « 涼宮ハルヒの分裂?星界の断章2? |
前後のエントリ < 旧 / 新 > | 小林めぐみ先生お誕生日 » |
このエントリーへのトラックバックURLを表示するにはここをクリック
※スパム防止のため、トラックバックURLは別ウインドウで表示します。(JavaScriptが有効でないと表示されません。)
コメント数: 0件