Zufälliger Artikel

Problemstellung:

Wie kann ich spezielle Verzeichnisse eines Systems ermitteln?
z.B. Pfad zu den "Eigenen Dateien" oder Pfad zum "Startmenü"

Folgenden Code in öffentliches Modul kopieren:

Public Declare Function SHGetSpecialFolderLocation _
    Lib "shell32.dll" ( _
    ByVal hwndOwner As Long, _
    ByVal nFolder As Long, _
    pidl As tpItemIDList) As Long
    
Public Declare Function SHGetPathFromIDList _
    Lib "shell32.dll" ( _
    ByVal pidl As Long, _
    ByVal pszPath As String) As Long
    
Public Declare Function CoTaskMemFree _
    Lib "ole32.dll" (ByRef hMem As Long) As Long
    
Public Type tpShortItemId
    cb As Long
    abID As Byte
End Type

Public Type tpItemIDList
    mkid As tpShortItemId
End Type

Public Const CSIDL_CONTROLS = &H3                   'Ermittelt das Verzeichnis "Systemsteuerung"
Public Const CSIDL_COOKIES = &H21                   'Ermittelt das Verzeichnis "Cookies"
Public Const CSIDL_COMMON_ADMINTOOLS = &H2F         'Ermittelt das Verzeichnis "Administartions Tools für alle Benutzer"
Public Const CSIDL_COMMON_ALTSTARTUP = &H1E         'Ermittelt das Verzeichnis "Alternatives Startverzeichnis für alle Benutzer"
Public Const CSIDL_COMMON_APPDATA = &H23            'Ermittelt das Verzeichnis "AppData für alle Benutzer"
Public Const CSIDL_COMMON_DESKTOPDIRECTORY = &H19   'Ermittelt das Verzeichnis "Desktop für alle Benutzer"
Public Const CSIDL_COMMON_DOCUMENTS = &H2E          'Ermittelt das Verzeichnis "Dokumente für alle Benutzer"
Public Const CSIDL_COMMON_FAVORITES = &H1F          'Ermittelt das Verzeichnis "Favoriten für alle Benutzer"
Public Const CSIDL_COMMON_MUSIC = &O35              'Ermittelt das Verzeichnis "Meine Musik für alle Benutzer"
Public Const CSIDL_COMMON_PICTURES = &O36           'Ermittelt das Verzeichnis "Meine Bilder für alle Benutzer"
Public Const CSIDL_COMMON_PROGRAMS = &O17           'Ermittelt das Verzeichnis "Startmenü/Programme für alle Benutzer"
Public Const CSIDL_COMMON_STARTMENU = &H16          'Ermittelt das Verzeichnis "Startmenü für alle Benutzer"
Public Const CSIDL_COMMON_STARTUP = &H18            'Ermittelt das Verzeichnis "Startmenü/Autostart für alle Benutzer"
Public Const CSIDL_COMMON_TEMPLATES = &H2D          'Ermittelt das Verzeichnis "Templates für alle Benutzer"
Public Const CSIDL_COMMON_VIDEO = &O37              'Ermittelt das Verzeichnis "Meine Videos für alle Benutzer"
Public Const CSIDL_DESKTOP = &H0                    'Ermittelt das Verzeichnis "Desktop"
Public Const CSIDL_DESKTOPDIRECTORY = &H10          'Ermittelt das Verzeichnis "Desktop-Verzeichnis"
Public Const CSIDL_FAVORITES = &H6                  'Ermittelt das Verzeichnis "Favoriten"
Public Const CSIDL_FONTS = &H14                     'Ermittelt das Verzeichnis "Fonts"
Public Const CSIDL_HISTORY = &H22                   'Ermittelt das Verzeichnis "History"
Public Const CSIDL_INTERNET_CACHE = &H20            'Ermittelt das Verzeichnis "Internet Cache"
Public Const CSIDL_INTERNET = &H1                   'Ermittelt das Verzeichnis "Internet"
Public Const CSIDL_DRIVES = &H11                    'Ermittelt das Verzeichnis "Arbeitsplatz"
Public Const CSIDL_PERSONAL = &H5                   'Ermittelt das Verzeichnis "Eigene Dokumente"
Public Const CSIDL_NETWORK = &H12                   'Ermittelt das Verzeichnis "Gesamtes Netzwerk"
Public Const CSIDL_NETHOOD = &H13                   'Ermittelt das Verzeichnis "Netzwerkumgebung"
Public Const CSIDL_PRINTERS = &H4                   'Ermittelt das Verzeichnis "Drucker"
Public Const CSIDL_PRINTHOOD = &H1B                 'Ermittelt das Verzeichnis "Drucker-Verzeichnis"
Public Const CSIDL_PROGRAMS = &H2                   'Ermittelt das Verzeichnis "Startmenü/Programme"
Public Const CSIDL_RECENT = &H8                     'Ermittelt das Verzeichnis "Startmenü/Dokumente"
Public Const CSIDL_BITBUCKET = &HA                  'Ermittelt das Verzeichnis "Papierkorb"
Public Const CSIDL_SENDTO = &H9                     'Ermittelt das Verzeichnis "Senden zu"
Public Const CSIDL_STARTMENU = &HB                  'Ermittelt das Verzeichnis "Startmenü"
Public Const CSIDL_STARTUP = &H7                    'Ermittelt das Verzeichnis "Autostart"
Public Const CSIDL_TEMPLATES = &H15                 'Ermittelt das Verzeichnis "Templates"

Public Enum enSpecialFolders
    spControlPanel = CSIDL_CONTROLS
    spCookies = CSIDL_COOKIES
    spCommonAdminTools = CSIDL_COMMON_ADMINTOOLS
    spCommonAltStartup = CSIDL_COMMON_ALTSTARTUP
    spCommonAppData = CSIDL_COMMON_APPDATA
    spCommonDesktopDirectory = CSIDL_COMMON_DESKTOPDIRECTORY
    spCommonDocuments = CSIDL_COMMON_DOCUMENTS
    spCommonFavorites = CSIDL_COMMON_FAVORITES
    spCommonMusic = CSIDL_COMMON_MUSIC
    spCommonPictures = CSIDL_COMMON_PICTURES
    spCommonPrograms = CSIDL_COMMON_PROGRAMS
    spCommonStartmenu = CSIDL_COMMON_STARTMENU
    spCommonStartup = CSIDL_COMMON_STARTUP
    spCommonTemplates = CSIDL_COMMON_TEMPLATES
    spCommonVideo = CSIDL_COMMON_VIDEO
    spDesktopUser = CSIDL_DESKTOP
    spDesktopDir = CSIDL_DESKTOPDIRECTORY
    spFavorites = CSIDL_FAVORITES
    spFonts = CSIDL_FONTS
    spHistory = CSIDL_HISTORY
    spInternetCache = CSIDL_INTERNET_CACHE
    spInternetVirtualFolder = CSIDL_INTERNET
    spMyComputerDrives = CSIDL_DRIVES
    spMyDocuments = CSIDL_PERSONAL
    spNetworkRoot = CSIDL_NETWORK
    spNetHood = CSIDL_NETHOOD
    spPrinters = CSIDL_PRINTERS
    spPrintHood = CSIDL_PRINTHOOD
    spStartMenuPrograms = CSIDL_PROGRAMS
    spRecent = CSIDL_RECENT
    spRecycleBin = CSIDL_BITBUCKET
    spSendTo = CSIDL_SENDTO
    spStartMenu = CSIDL_STARTMENU
    spStartup = CSIDL_STARTUP
    spTemplates = CSIDL_TEMPLATES
End Enum

Public Function GetSpecialFolder( _
    lngSpecialFolder As enSpecialFolders) As String
    Dim lngRet As Long
    Dim strPath As String
    Dim typIDL As tpItemIDList
    lngRet = SHGetSpecialFolderLocation(0, _
        lngSpecialFolder, typIDL)
    If lngRet = 0 Then
        strPath = Space$(512)
        lngRet = SHGetPathFromIDList( _
            ByVal typIDL.mkid.cb, ByVal strPath)
        Call CoTaskMemFree(typIDL.mkid.cb)
        If lngRet Then
            GetSpecialFolder = Left(strPath, _
                InStr(strPath, Chr(0)) - 1) & "\"
        End If
    End If
End Function

Aufruf z.B. für das Cookies Verzeichnis:

Me.Text0 = GetSpecialFolder(spCookies)

Ergebnis:


Home

1 1 1 1 1 1 1 1 1 1 Rating 0.00 (0 Votes)

Problemstellung:

Wie kann ich feststellen ob eine DB Lokal oder im Netzwerk geöffnet wurde?
Für MS-Access00-07

Public Declare Function WNetGetConnection Lib "mpr.dll" _
    Alias "WNetGetConnectionA" _
    (ByVal lpszLocalName As String, _
    ByVal lpszRemoteName As String, _
    cbRemoteName As Long) As Long
    
Function IsNetworkDB(strPath As String) As Boolean
    Dim strPath As String
    Dim strDrive As String, strResult As String
    Dim R As Long
    IsNetworkDB = False
    strDrive = Left$(strPath, 2)
    If strDrive = "\\" Then
        IsNetworkDB = True
        Exit Function
    End If
    strResult = Space$(250)
    R = WNetGetConnection(strDrive & vbNullChar, _
        strResult, _
        Len(strResult))
    If R = 0 And Trim$(strResult) <> "" Then
        IsNetworkDB = True
    End If
End Function

Aufruf:

Dim bNetState As Boolean
bNetState = IsNetworkDB(CurrentDb.Name)

Das Ergebnis:

Die Variable bNetState nimmt den Wert True an wenn die DB im Netz geöffnet wurde
und False wenn DB Lokal geöffnet ist.

Ähnliche Artikel

Kommentar schreiben

Sicherheitscode
Aktualisieren

Login Form

1.png1.png9.png1.png3.png6.png8.png
Heute19
Gestern75
Diese Woche417
Dieser Monat1301
Total1191368

  • IP: 54.81.71.187
  • Browser: Unknown
  • Version:
  • OS: Unknown

Online

1
Online

21. April 2018