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 4.50 (1 Vote)

Problemstellung:
Es existiert eine Zeitspanne, z.B. 07:00 - 16:00 und es existiert ein Zeitrahmen z.B. 06:00 - 14:00.
Wieviele Stunden der Zeitspanne sind in dem Zeitrahmen enthalten.
Ergebnis wäre 7,00 oder 07:00.
Dieses Ergebnis wird durch die Funktion ermittelt.

Voraussetzungen:
Das Bsp ist ab A97 lauffähig.

Funktionsweise:
Die Berechnung erfolgt in der Funktion "Zeitraumerfassung"
Listing s. Bsp-DB

Syntax und Argumente:

Public Function Zeitraumerfassung(varStart As Variant, varEnde As Variant, varZeitraumStart As Variant, _
                                  varZeitraumEnde As Variant, Optional fTyp As Boolean = True) As Variant

 

varStart = Startzeit des Zeitraumes
varEnde = Endzeit des Zeitraumes
varZeitraumStart = Startzeit des Zeitrahmens
varZeitraumEnde = Endzeit des Zeitrahmens
fTyp = regelt das Format der Ausgabe des Ergebnisses

z.B.
Zeitraumerfassung(#07:00:00# ,#12:00:00#, #06:00:00#,#14:00:00#,True) = 5,00
Zeitraumerfassung(#10:00:00# ,#23:00:00#, #06:00:00#,#14:00:00#,False) = 04:00

Es ist möglich auch Zeitanteile zu berechnen die über 24:00 hinausgehen.
Die Berechnung kann innerhalb einer Abfrage, in einem Bericht oder Formular erfolgen.

Die praktische Nutzung könnte in der Berechnung für Nachtarbeitszuschläge o.ä. erfolgen.

 

Dateien:

Ermitteln von frei definierbaren Zeitanteilen aus frei definierbaren Zeiträumen
ab A00

Die Zip-Datei enthält eine Version ab A00

Update 04.03.2009:

Einige Berechnungsfehler korrigiert.
Es sind jetzt Angaben für einen 24 Stundenzeitraum möglich
z.B. 04:00 - 04:00

Update 21.02.2010:

Einige Berechnungsfehler korrigiert.
Datum 05.02.2018
Dateigröße 35.95 KB
Download 3.438

 

Ä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