Seite 1 von 1

Wie kann ich Systemvariable nutzen

Verfasst: 25.05.2005 12:27
von HoDam
Die *ini -Datei die ich auslesen möchte steht grundsätzlich im Windowsverzeichnis.

Da dieses in Abhängigkeit vom OS (englisch, deutsch, andere Sprachen
bzw. der Installation verschiedene Bezeichungen haben kann, kann ich diesen Ort nicht fest programmieren.

Der Versuch über %systemroot% (windir) funktioniert bei mir nicht.


Beispiel:

Code: Alles auswählen

OpenPreferences("%Systemroot%\CTEXE.ini") 
Wie kann ich diese Datei ansprechen, unabhängig davon in welchem Arbeitsverzeichnis ich mich befinde


Danke

Re: Wie kann ich Systemvariable nutzen

Verfasst: 25.05.2005 13:26
von Danilo
HoDam hat geschrieben:Der Versuch über %systemroot% (windir) funktioniert bei mir nicht.

Code: Alles auswählen

Procedure.s GetWinDir()
  dir$ = Space(#MAX_PATH)
  GetWindowsDirectory_(@dir$,#MAX_PATH)
  ProcedureReturn dir$
EndProcedure

Procedure.s GetSysDir()
  dir$ = Space(#MAX_PATH)
  GetSystemDirectory_(@dir$,#MAX_PATH)
  ProcedureReturn dir$
EndProcedure

Procedure.s GetSysVar(var$)
  out$ = Space(1024)
  GetEnvironmentVariable_(var$,out$,2048)
  ProcedureReturn out$
EndProcedure

Debug GetWinDir()
Debug GetSysDir()
Debug GetSysVar("systemroot")

Verfasst: 25.05.2005 13:32
von zigapeda
Wenn wir gerade dabei sind wie kann man z.B. den ordner des benutzers rausfinden?
also bei mir z.B.
C:\Dokumente und einstellungen\zigapeda\Eigene Dateien
geht das auch mit einer Winapi oder geht das nur wenn man erst den Benutzernamen rausfindet und dann den pfad zusammenbaut?

Verfasst: 25.05.2005 14:08
von Danilo
zigapeda hat geschrieben:Wenn wir gerade dabei sind wie kann man z.B. den ordner des benutzers rausfinden?
also bei mir z.B.
C:\Dokumente und einstellungen\zigapeda\Eigene Dateien

Code: Alles auswählen

#CSIDL_MYMUSIC                  = $000d      ;// "My Music" folder
#CSIDL_APPDATA                  = $001A      ;// Application Data, new For NT4
#CSIDL_LOCAL_APPDATA            = $001C      ;// non roaming, user\Local Settings\Application Data
#CSIDL_INTERNET_CACHE           = $0020
#CSIDL_COOKIES                  = $0021
#CSIDL_HISTORY                  = $0022
#CSIDL_COMMON_APPDATA           = $0023      ;// All Users\Application Data
#CSIDL_WINDOWS                  = $0024      ;// GetWindowsDirectory()
#CSIDL_SYSTEM                   = $0025      ;// GetSystemDirectory()
#CSIDL_PROGRAM_FILES            = $0026      ;// C:\Program Files
#CSIDL_MYPICTURES               = $0027      ;// My Pictures, new For Win2K
#CSIDL_PROGRAM_FILES_COMMON     = $002b      ;// C:\Program Files\Common 
#CSIDL_COMMON_DOCUMENTS         = $002e      ;// All Users\Documents
#CSIDL_RESOURCES                = $0038      ;// %windir%\Resources\, For theme And other windows resources.
#CSIDL_RESOURCES_LOCALIZED      = $0039      ;// %windir%\Resources\<LangID>, For theme And other windows specific resources.
#CSIDL_COMMON_ADMINTOOLS        = $002f      ;// All Users\Start Menu\Programs\Administrative Tools
#CSIDL_ADMINTOOLS               = $0030      ;// <user name>\Start Menu\Programs\Administrative Tools


Procedure.s GetSpecialDir(dir)
  lib = OpenLibrary(#PB_Any,"shell32.dll")
  If lib
    dir$ = Space(#MAX_PATH)
    If CallFunction(lib,"SHGetFolderPathA",0,dir,0,0,@dir$)<>#S_OK
      dir$=""
    EndIf
    CloseLibrary(lib)
  EndIf
  ProcedureReturn dir$
EndProcedure


Procedure.s GetUserDir()
  #CSIDL_PERSONAL      = $0005 ; My Documents
  lib = OpenLibrary(#PB_Any,"shell32.dll")
  If lib
    dir$ = Space(#MAX_PATH)
    If CallFunction(lib,"SHGetFolderPathA",0,#CSIDL_PERSONAL,0,0,@dir$)<>#S_OK
      dir$=""
    EndIf
    CloseLibrary(lib)
  EndIf
  ProcedureReturn dir$
EndProcedure

Debug GetUserDir()

Debug "---"

Debug GetSpecialDir(#CSIDL_WINDOWS)
Debug GetSpecialDir(#CSIDL_SYSTEM)
Debug GetSpecialDir(#CSIDL_PROGRAM_FILES)
Debug GetSpecialDir(#CSIDL_APPDATA)
Debug GetSpecialDir(#CSIDL_LOCAL_APPDATA)
Debug GetSpecialDir(#CSIDL_INTERNET_CACHE)
Debug GetSpecialDir(#CSIDL_COOKIES)
Debug GetSpecialDir(#CSIDL_HISTORY)
Debug GetSpecialDir(#CSIDL_COMMON_APPDATA)
Debug GetSpecialDir(#CSIDL_MYPICTURES)
Debug GetSpecialDir(#CSIDL_PROGRAM_FILES_COMMON)
Debug GetSpecialDir(#CSIDL_COMMON_DOCUMENTS)
Debug GetSpecialDir(#CSIDL_RESOURCES)
Debug GetSpecialDir(#CSIDL_RESOURCES_LOCALIZED)
Debug GetSpecialDir(#CSIDL_COMMON_ADMINTOOLS)
Debug GetSpecialDir(#CSIDL_ADMINTOOLS)
Debug GetSpecialDir(#CSIDL_MYMUSIC)

Verfasst: 25.05.2005 17:25
von HoDam
Danke Danilo

hat funktioniert