Seite 2 von 2

Verfasst: 22.05.2008 00:12
von ts-soft
scholly hat geschrieben:Bei Gelegenheit muß ich dann nur noch herausbekommen, wie ich

Code: Alles auswählen

TCHAR szAppData[MAX_PATH];
hr = SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, szAppData)
in PB nutzen kann.

Code: Alles auswählen

Procedure.s GetSpecialFolder(CSIDL.l)
  Protected *itemid.ITEMIDLIST
  Protected location.s = Space(#MAX_PATH)

  If SHGetSpecialFolderLocation_ (0, CSIDL, @*itemid) = #NOERROR
    If SHGetPathFromIDList_(*itemid, @location)
      If Right(location, 1) <> "" : location + "" : EndIf
      ProcedureReturn location
    EndIf
  EndIf
EndProcedure

Debug GetSpecialFolder(#CSIDL_APPDATA)
oder einfacher :mrgreen:

Code: Alles auswählen

Debug GetEnvironmentVariable("APPDATA") + ""

Verfasst: 22.05.2008 18:33
von scholly
ts-soft hat geschrieben: oder einfacher :mrgreen:

Code: Alles auswählen

Debug GetEnvironmentVariable("APPDATA") + ""
Keine Ahnung, ob das wer anders mal brauchen kann, aber weils heut etwas kühl/trüb und nicht animierend für Gartenarbeit war, hab ich mal verglichen, was man per Environment bzw. CSIDL erhalten kann:

Code: Alles auswählen

Procedure.s GetSpecialFolder(CSIDL.l)
  ;ts-soft
  ;http://www.purebasic.fr/german/viewtopic.php?t=16561&start=10
  Protected *itemid.ITEMIDLIST
  Protected location.s = Space(#MAX_PATH)

  If SHGetSpecialFolderLocation_ (0, CSIDL, @*itemid) = #NOERROR
    If SHGetPathFromIDList_(*itemid, @location)
      If Right(location, 1) <> "" 
        location + "" 
      EndIf
      ProcedureReturn location
    EndIf
  EndIf
EndProcedure

Debug "Folders per GetEnvironmentVariable()" 
Debug "----------------------------------------------------------------------------"
Debug "ALLUSERSPROFILE                = " + GetEnvironmentVariable("ALLUSERSPROFILE") + ""
Debug "APPDATA                        = " + GetEnvironmentVariable("APPDATA") + ""
Debug "CommonProgramFiles             = " + GetEnvironmentVariable("CommonProgramFiles") + ""
Debug "HOMEDRIVE                      = " + GetEnvironmentVariable("HOMEDRIVE") + ""
Debug "HOMEPATH                       = " + GetEnvironmentVariable("HOMEPATH") + ""
Debug "ProgramFiles                   = " + GetEnvironmentVariable("ProgramFiles") + ""
Debug "SystemDrive                    = " + GetEnvironmentVariable("SystemDrive") + ""
Debug "SystemRoot                     = " + GetEnvironmentVariable("SystemRoot") + ""
Debug "TEMP                           = " + GetEnvironmentVariable("TEMP") + ""
Debug "TMP                            = " + GetEnvironmentVariable("TMP") + ""
Debug "USERPROFILE                    = " + GetEnvironmentVariable("USERPROFILE") + ""
Debug "windir                         = " + GetEnvironmentVariable("windir") + ""
Debug "----------------------------------------------------------------------------"

Debug "CSIDL-Folders per SHGetSpecialFolderLocation_()"
Debug "----------------------------------------------------------------------------"
Debug "CSIDL_ADMINTOOLS               = " + GetSpecialFolder(#CSIDL_ADMINTOOLS )
Debug "CSIDL_ALTSTARTUP               = " + GetSpecialFolder(#CSIDL_ALTSTARTUP )
Debug "CSIDL_APPDATA                  = " + GetSpecialFolder(#CSIDL_APPDATA )
Debug "CSIDL_BITBUCKET                = " + GetSpecialFolder(#CSIDL_BITBUCKET)
Debug "CSIDL_CDBURN_AREA              = " + GetSpecialFolder(#CSIDL_CDBURN_AREA)
Debug "CSIDL_COMMON_ADMINTOOLS        = " + GetSpecialFolder(#CSIDL_COMMON_ADMINTOOLS) 
Debug "CSIDL_COMMON_ALTSTARTUP        = " + GetSpecialFolder(#CSIDL_COMMON_ALTSTARTUP) 
Debug "CSIDL_COMMON_APPDATA           = " + GetSpecialFolder(#CSIDL_COMMON_APPDATA )
Debug "CSIDL_COMMON_DESKTOPDIRECTORY  = " + GetSpecialFolder(#CSIDL_COMMON_DESKTOPDIRECTORY )
Debug "CSIDL_COMMON_DOCUMENTS         = " + GetSpecialFolder(#CSIDL_COMMON_DOCUMENTS )
Debug "CSIDL_COMMON_FAVORITES         = " + GetSpecialFolder(#CSIDL_COMMON_FAVORITES )
Debug "CSIDL_COMMON_MUSIC             = " + GetSpecialFolder(#CSIDL_COMMON_MUSIC )
Debug "CSIDL_COMMON_OEM_LINKS         = " + GetSpecialFolder(#CSIDL_COMMON_OEM_LINKS )
Debug "CSIDL_COMMON_PICTURES          = " + GetSpecialFolder(#CSIDL_COMMON_PICTURES )
Debug "CSIDL_COMMON_PROGRAMS          = " + GetSpecialFolder(#CSIDL_COMMON_PROGRAMS )
Debug "CSIDL_COMMON_STARTMENU         = " + GetSpecialFolder(#CSIDL_COMMON_STARTMENU )
Debug "CSIDL_COMMON_STARTUP           = " + GetSpecialFolder(#CSIDL_COMMON_STARTUP )
Debug "CSIDL_COMMON_TEMPLATES         = " + GetSpecialFolder(#CSIDL_COMMON_TEMPLATES )
Debug "CSIDL_COMMON_VIDEO             = " + GetSpecialFolder(#CSIDL_COMMON_VIDEO )
Debug "CSIDL_COMPUTERSNEARME          = " + GetSpecialFolder(#CSIDL_COMPUTERSNEARME )
Debug "CSIDL_CONNECTIONS              = " + GetSpecialFolder(#CSIDL_CONNECTIONS )
Debug "CSIDL_CONTROLS                 = " + GetSpecialFolder(#CSIDL_CONTROLS )
Debug "CSIDL_COOKIES                  = " + GetSpecialFolder(#CSIDL_COOKIES )
Debug "CSIDL_DESKTOP                  = " + GetSpecialFolder(#CSIDL_DESKTOP )
Debug "CSIDL_DESKTOPDIRECTORY         = " + GetSpecialFolder(#CSIDL_DESKTOPDIRECTORY )
Debug "CSIDL_DRIVES                   = " + GetSpecialFolder(#CSIDL_DRIVES )
Debug "CSIDL_FAVORITES                = " + GetSpecialFolder(#CSIDL_FAVORITES )
Debug "CSIDL_FONTS                    = " + GetSpecialFolder(#CSIDL_FONTS )
Debug "CSIDL_HISTORY                  = " + GetSpecialFolder(#CSIDL_HISTORY )
Debug "CSIDL_INTERNET                 = " + GetSpecialFolder(#CSIDL_INTERNET )
Debug "CSIDL_INTERNET_CACHE           = " + GetSpecialFolder(#CSIDL_INTERNET_CACHE )
Debug "CSIDL_LOCAL_APPDATA            = " + GetSpecialFolder(#CSIDL_LOCAL_APPDATA )
Debug "CSIDL_MYDOCUMENTS              = " + GetSpecialFolder(#CSIDL_MYDOCUMENTS )
Debug "CSIDL_MYMUSIC                  = " + GetSpecialFolder(#CSIDL_MYMUSIC )
Debug "CSIDL_MYPICTURES               = " + GetSpecialFolder(#CSIDL_MYPICTURES )
Debug "CSIDL_MYVIDEO                  = " + GetSpecialFolder(#CSIDL_MYVIDEO )
Debug "CSIDL_NETHOOD                  = " + GetSpecialFolder(#CSIDL_NETHOOD )
Debug "CSIDL_NETWORK                  = " + GetSpecialFolder(#CSIDL_NETWORK )
Debug "CSIDL_PERSONAL                 = " + GetSpecialFolder(#CSIDL_PERSONAL )
Debug "CSIDL_PRINTERS                 = " + GetSpecialFolder(#CSIDL_PRINTERS )
Debug "CSIDL_PRINTHOOD                = " + GetSpecialFolder(#CSIDL_PRINTHOOD )
Debug "CSIDL_PROFILE                  = " + GetSpecialFolder(#CSIDL_PROFILE )
Debug "CSIDL_PROGRAM_FILES            = " + GetSpecialFolder(#CSIDL_PROGRAM_FILES )
Debug "CSIDL_PROGRAM_FILES_COMMON     = " + GetSpecialFolder(#CSIDL_PROGRAM_FILES_COMMON )
Debug "CSIDL_PROGRAM_FILES_COMMONX86  = " + GetSpecialFolder(#CSIDL_PROGRAM_FILES_COMMONX86 )
Debug "CSIDL_PROGRAM_FILESX86         = " + GetSpecialFolder(#CSIDL_PROGRAM_FILESX86 )
Debug "CSIDL_PROGRAMS                 = " + GetSpecialFolder(#CSIDL_PROGRAMS )
Debug "CSIDL_RECENT                   = " + GetSpecialFolder(#CSIDL_RECENT )
Debug "CSIDL_RESOURCES                = " + GetSpecialFolder(#CSIDL_RESOURCES )
Debug "CSIDL_RESOURCES_LOCALIZED      = " + GetSpecialFolder(#CSIDL_RESOURCES_LOCALIZED )
Debug "CSIDL_SENDTO                   = " + GetSpecialFolder(#CSIDL_SENDTO )
Debug "CSIDL_STARTMENU                = " + GetSpecialFolder(#CSIDL_STARTMENU )
Debug "CSIDL_STARTUP                  = " + GetSpecialFolder(#CSIDL_STARTUP )
Debug "CSIDL_SYSTEM                   = " + GetSpecialFolder(#CSIDL_SYSTEM )
Debug "CSIDL_SYSTEMX86                = " + GetSpecialFolder(#CSIDL_SYSTEMX86 )
Debug "CSIDL_TEMPLATES                = " + GetSpecialFolder(#CSIDL_TEMPLATES )
Debug "CSIDL_WINDOWS                  = " + GetSpecialFolder(#CSIDL_WINDOWS)

Debug "----------------------------------------------------------------------------"

Best viewable with fixed fonts (TM) :lol:

Bei mir bleibt einige leer, was unter VISTA aber was rauswerfen sollte.

Verfasst: 22.05.2008 18:42
von ts-soft
Hinweis zu GetSpecialFolder:
Leider sind diese Konstanten abhängig von der WinVersion, sowie von dem
installiertem Internet Explorer.

Wenn alternativen vorhanden, sollte man diese nehmen, z.B.
GetSystemDirectory_() für das Systemverzeichnis. Am besten immer in der
MSDN nachschauen, bzw. über Google suchen, da gibts bereits diverse
Aufstellungen, was ab wann.

Die gilt besonders, wenn man Win9x Plattformen unterstützen möchte!