'---------------------------------------------------------------------------------------
' Module : modFPOrdnerEigenedateien
' DateTime : 06.01.2008 22:51
' Author : Burkhard Schlutt
' Purpose : enthält nur die Funktion zur Ermittlung des Ortes für Eigene Dateien
' durch andere Konstanten können auch andere Verzeichnisse ermittelt werden
'---------------------------------------------------------------------------------------
Option Explicit
'API-Deklaration
Private Declare Function
SHGetFolderPath Lib
"shell32.dll" Alias
_
"SHGetFolderPathA" (ByVal
hwndOwner As Long
, ByVal
nFolder As Long
, ByVal
_
hToken As Long
, ByVal
dwFlags As Long
, ByVal
lpszPath As String
) As Long
Private Declare Function
GetDesktopWindow Lib
"user32" () As Long
Private Declare Function
GetWindowText Lib
"user32" Alias
"GetWindowTextA" _
(ByVal
hwnd As Long
, ByVal
lpString As String
, ByVal
cch As Long
) As Long
Private Declare Function
GetWindowTextLength Lib
"user32" Alias
_
"GetWindowTextLengthA" (ByVal
hwnd As Long
) As Long
'SHGetFolderPath dwFlags-Konstanten
Private Const
SHGFP_TYPE_CURRENT = 0 'Aktueller Verzeichnispfad des virtuellen Verzeichnisses
Private Const
SHGFP_TYPE_DEFAULT = 1 'Standardpfad des virtuellen Verzeichnisses
'SHGetFolderPath Rückgabe-Konstanten
Private Const
S_OK = &H0 'Die Funktion war erfolgreich
Private Const
S_FALSE = &H1 'Die Funktion ist gescheitert
Private Const
E_INVALIDARG = &H80070057 'Es wurden ungültige Parameter übergeben
'SHGetFolderPath/SHGetSpecialFolderPath nFolder-Konstanten
Private Const
CSIDL_FLAG_CREATE = &H8000 '(Win 2000) Falls das Verzeichnis nicht Eistiert wird es erstellt
Private Const
CSIDL_FLAG_DONT_VERIFY = &H4000 '(Win 2000) Benutzt den Ordner auch wenn der CSIDL nicht existiert
Private Const
CSIDL_ADMINTOOLS = &H30 '(Win 2000) Ermittelt das Verzeichnis "Administrations Tools"
Private Const
CSIDL_ALTSTARTUP = &H1D 'Ermittelt das Verzeichnis "Alternatives Startverzeichnis"
Private Const
CSIDL_APPDATA = &H1A 'Ermittelt das Verzeichnis "AppData"
Private Const
CSIDL_BITBUCKET = &HA 'Ermittelt das Verzeichnis "Papierkorb"
Private Const
CSIDL_COMMON_ADMINTOOLS = &H2F '(Win 2000) Ermittelt das Verzeichnis "Administartions Tools für alle Benutzer"
Private Const
CSIDL_COMMON_ALTSTARTUP = &H1D '(Win 2000) Ermittelt das Verzeichnis "Alternatives Startverzeichnis für alle Benutzer"
Private Const
CSIDL_COMMON_APPDATA = &H23 '(Win NT/2000) Ermittelt das Verzeichnis "AppData für alle Benutzer"
Private Const
CSIDL_COMMON_DESKTOPDIRECTORY = &H19 '(Win NT/2000) Ermittelt das Verzeichnis "Desktop für alle Benutzer"
Private Const
CSIDL_COMMON_DOCUMENTS = &H2E '(Win NT/2000) Ermittelt das Verzeichnis "Dokumente für alle Benutzer"
Private Const
CSIDL_COMMON_FAVORITES = &H1F '(Win NT/2000) Ermittelt das Verzeichnis "Favoriten für alle Benutzer"
Private Const
CSIDL_COMMON_PROGRAMS = &H17 '(Win NT/2000) Ermittelt das Verzeichnis "Startmenü/Programme für alle Benutzer"
Private Const
CSIDL_COMMON_STARTMENU = &H16 '(Win NT/2000) Ermittelt das Verzeichnis "Startmenü für alle Benutzer"
Private Const
CSIDL_COMMON_STARTUP = &H18 '(Win NT/2000) Ermittelt das Verzeichnis "Startmenü/Autostart für alle Benutzer"
Private Const
CSIDL_COMMON_TEMPLATES = &H2D '(Win NT/2000) Ermittelt das Verzeichnis "Templates für alle Benutzer"
Private Const
CSIDL_CONTROLS = &H3 'Ermittelt das Verzeichnis "Systemsteuerung"
Private Const
CSIDL_COOKIES = &H21 'Ermittelt das Verzeichnis "Cookies"
Private Const
CSIDL_DESKTOP = &H0 'Ermittelt das Verzeichnis "Desktop"
Private Const
CSIDL_DESKTOPDIRECTORY = &H10 'Ermittelt das Verzeichnis "Desktop-Verzeichnis"
Private Const
CSIDL_DRIVES = &H11 'Ermittelt das Verzeichnis "Arbeitsplatz"
Private Const
CSIDL_FAVORITES = &H6 'Ermittelt das Verzeichnis "Favoriten"
Private Const
CSIDL_FONTS = &H14 'Ermittelt das Verzeichnis "Fonts"
Private Const
CSIDL_HISTORY = &H22 'Ermittelt das Verzeichnis "History"
Private Const
CSIDL_INTERNET = &H1 'Ermittelt das Verzeichnis "Internet"
Private Const
CSIDL_INTERNET_CACHE = &H20 'Ermittelt das Verzeichnis "Internet Cache"
Private Const
CSIDL_LOCAL_APPDATA = &H1C '(nur IE ab version 5.0) Ermittelt das Verzeichnis "Local AppData"
Private Const
CSIDL_MYPICTURES = &H27 '(nur IE ab version 5.0) Ermittelt das Verzeichnis "Eigene Bilder"
Private Const
CSIDL_NETHOOD = &H13 'Ermittelt das Verzeichnis "Netzwerkumgebung"
Private Const
CSIDL_NETWORK = &H12 'Ermittelt das Verzeichnis "Gesamtes Netzwerk"
Private Const
CSIDL_PERSONAL = &H5 'Ermittelt das Verzeichnis "Eigene Dokumente"
Private Const
CSIDL_PRINTERS = &H4 'Ermittelt das Verzeichnis "Drucker"
Private Const
CSIDL_PRINTHOOD = &H1B 'Ermittelt das Verzeichnis "Drucker-Verzeichnis"
Private Const
CSIDL_PROFILE = &H28 '(nur IE ab version 5.0) Ermittelt das Verzeichnis "Profile"
Private Const
CSIDL_PROGRAM_FILES = &H26 '(nur IE ab version 5.0) Ermittelt das Verzeichnis "Programme"
Private Const
CSIDL_PROGRAM_FILES_COMMON = &H2B '(Win NT/2000) Ermittelt das Verzeichnis "Programme für alle Benutzer"
Private Const
CSIDL_PROGRAM_FILES_COMMONX86 = &H2C '(Win 2000 - x86) Ermittelt das Verzeichnis "Programme für alle Benutzer"
Private Const
CSIDL_PROGRAM_FILESX86 = &H2A '(Win 2000 - RISC) Ermittelt das Verzeichnis "Programme für alle Benutzer"
Private Const
CSIDL_PROGRAMS = &H2 'Ermittelt das Verzeichnis "Startmenü/Programme"
Private Const
CSIDL_RECENT = &H8 'Ermittelt das Verzeichnis "Startmenü/Dokumente"
Private Const
CSIDL_SENDTO = &H9 'Ermittelt das Verzeichnis "Senden zu"
Private Const
CSIDL_STARTMENU = &HB 'Ermittelt das Verzeichnis "Startmenü"
Private Const
CSIDL_STARTUP = &H7 'Ermittelt das Verzeichnis "Autostart"
Private Const
CSIDL_SYSTEM = &H25 '(nur IE ab version 5.0) Ermittelt das Verzeichnis "System"
Private Const
CSIDL_SYSTEMX86 = &H29 '(Win 2000) Ermittelt das Verzeichnis "Systemx86"
Private Const
CSIDL_TEMPLATES = &H15 'Ermittelt das Verzeichnis "Templates"
Private Const
CSIDL_WINDOWS = &H24 '(nur IE ab version 5.0) Ermittelt das Verzeichnis "Windows"
Private Sub
Test_Ordner_Eigenedateien()
MsgBox Ordner_Eigenedateien, , "Die Funktion Orner_Eigenedateien liefert folgendes Ergebnis"
End Sub
Function
Ordner_Eigenedateien() As String Dim
hwnd
As Long Dim
sSave As String Dim
Retval
As Long
, Buffer As String
Buffer = Space(256)
'Wir brauchen ein Fenster-handle und nehmen des Desktop
hwnd = GetDesktopWindow sSave = Space$(GetWindowTextLength(hwnd) + 1)
GetWindowText hwnd, sSave, Len(sSave) Retval = SHGetFolderPath(hwnd,
CSIDL_PERSONAL, 0&, SHGFP_TYPE_CURRENT, Buffer) Ordner_Eigenedateien =
Left$(Buffer, InStr(1, Buffer, vbNullChar) - 1)
End
Function