23時25分18秒 [C++ Builder]
「マイドキュメント」とか「スタートアップ」とか「お気に入り」みたいな特殊なフォルダは、環境やユーザの設定によって位置が異なります。
なので、これらの特殊なフォルダにアクセスするプログラムを作る際には、パスを決め打ちで作るわけにはいかず、Windows側から取得する必要があります。
特殊なフォルダのパスを取得するには、SHGetSpecialFolderLocationとSHGetPathFromIDListを使います。
以下のよーな感じで。
上記は、「マイドキュメント」(=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件