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:
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