スペシャルフォルダの求め方




スペシャルフォルダ(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
Windows98 Second Edition + Visual Basic 6


このサンプルを使用しての感想や、質問は 掲示板や、 らくがき帳に書きとめて頂けるとうれしいです。


戻る


インデックスに戻る


PCpylg}Wz O~yz Yahoo yV NTT-X Store

z[y[W NWbgJ[h COiq [ COsI COze