スペシャルフォルダの求め方
スペシャルフォルダ(IEの[お気に入り]やデスクトップなどのフォルダ)は、API利用により簡単に求めることができます。 *----*----*----*----*----*----*----*----*----*----*----*----*----* サンプル Vbを起動し、フォームモジュールに以下のコードを貼り付けて実行して見てください。 Option Explicit Private Const SFID_DESKTOP = &H0 Private Const SFID_PROGRAMS = &H2 Private Const SFID_PERSONAL = &H5 Private Const SFID_FAVORITES = &H6 Private Const SFID_STARTUP = &H7 Private Const SFID_RECENT = &H8 Private Const SFID_SENDTO = &H9 Private Const SFID_STARTMENU = &HB Private Const SFID_DESKTOPDIRECTORY = &H10 Private Const SFID_NETHOOD = &H13 Private Const SFID_FONTS = &H14 Private Const SFID_TEMPLATES = &H15 Private Const SFID_COMMON_STARTMENU = &H16 Private Const SFID_COMMON_PROGRAMS = &H17 Private Const SFID_COMMON_STARTUP = &H18 Private Const SFID_COMMON_DESKTOPDIRECTORY = &H19 Private Const SFID_APPDATA = &H1A Private Const SFID_PRINTHOOD = &H1B Private Const SFID_ProgramFiles = &H10000 Private Const SFID_CommonFiles = &H10001 Private Declare Function SHGetSpecialFolderLocation Lib "shell32" _ (ByVal hwndOwner As Long, ByVal nFolder As Long, ByRef pIdl As Long) As Long Private Declare Function SHGetPathFromIDList Lib "shell32" _ Alias "SHGetPathFromIDListA" _ (ByVal pIdl As Long, ByVal pszPath As String) As Long Private Sub Form_Click() Dim sfid& Dim sDir$ SHGetSpecialFolderLocation Me.hWnd, SFID_FAVORITES, sfid sDir = String$(32767, Chr$(0)) SHGetPathFromIDList sfid, sDir MsgBox Left$(sDir, InStr(sDir, Chr$(0)) - 1) SHGetSpecialFolderLocation Me.hWnd, SFID_DESKTOP, sfid sDir = String$(32767, Chr$(0)) SHGetPathFromIDList sfid, sDir MsgBox Left$(sDir, InStr(sDir, Chr$(0)) - 1) End Sub [F5]を押し実行した後フォームをクリックして見てください。 一回目のメッセージボックスで[お気に入り]フォルダ、 二回目のメッセージボックスで[デスクトップ]フォルダが表示されます。 Constで宣言されている値が必ずしもすべて取り出せるとは限りません。 Vb6、Vb5では正常に動作しましたが、Vb4の32ビット環境でも可能だと思います。 |
動作確認
Windows95 + Visual Basic 5このサンプルを使用しての感想や、質問は 掲示板や、 らくがき帳に書きとめて頂けるとうれしいです。