| |
|
|
Michael W. | Desde que mehrmals encima esta Registry-Typ gestolpert bin, Yo simplemente veces zwei Möglichkeiten getestet en a el korrekten String a gelangen.
Declarar cadena s
Cls
Imprimir " ---------- ExpandEnvStr$(\q%path%\q)"
Imprimir "PATH =",ExpandEnvStr$("%path%")
Imprimir " ----- "
Imprimir "AppData =",ExpandEnvStr$("%APPDATA%")
Imprimir " ----- "
Imprimir "UserProfile =",ExpandEnvStr$("%USERPROFILE%")
Imprimir " ----- "
Imprimir "Computername =",ExpandEnvStr$("%COMPUTERNAME%")
Imprimir " ---------- GetEnvVars$()"
s = GetEnvVars$()
Imprimir s
Imprimir "Das sind", Len( s, "," ), "Environment-Variables."
Imprimir " ---------- ExpandEnvPath$(\q%APPDATA%\XProfan\Test\Test.data\q)"
Imprimir ExpandEnvPath$("%APPDATA%")
Imprimir " ---------- "
WaitKey
End
// intern
// Valor$ = GetEnv$(EnvVar$)
// SetEnv EnvVar$, Valor$
Proc ExpandEnvStr$
// una Registry-String des Typs REG_EXPAND_SZ enträtseln
// s = ExpandEnvStr("%path%")
// Groß-/Kleinschreibung el Env-Variables-Namen es egal.
Parámetros cadena EnvStr
Declarar mem inbuf,outbuf, int Size, cadena erg
Size = 32768// max.
Dim inbuf,Size
Dim outbuf,Size
String inbuf,0 = EnvStr
Externo("kernel32.dll","ExpandEnvironmentStringsA", inbuf, outbuf, Size)
erg = String$(outbuf,0)
Disponer inbuf,outbuf
Volver erg
ENDPROC
Proc GetEnvVars$
// Liefert una Komma-saparierten String
// con allen Variablennamen des Environments zurück
// s = GetEnvVars$()
Declarar mem buf
Declarar long Size, EnvAdr, p, i
Declarar cadena s, tmp, erg
Size = 32768// max.
Dim buf,Size
EnvAdr = Externo("kernel32.dll","GetEnvironmentStringsA")
buf = EnvAdr// bearbeiten mittels Zona
Claro p, erg
s = String$(buf,p)
Mientras que Len(s) > 0
tmp = Trim$(Substr$(s,1,"="))
Case Len(tmp) : erg = erg + "," + tmp
Inc p, Len(s) + 1
s = String$(buf,p)
EndWhile
Disponer buf
Externo("kernel32.dll","FreeEnvironmentStringsA",EnvAdr)
Case Len(erg) : erg = Del$(erg,1,1)
Volver erg
ENDPROC
// el hier voluntad en me por desgracia, no...
Proc ExpandEnvPath$
// Ersetzt cierto Ordnernamen en una vollständig qualifizierten Pfad con ihren zugehörigen Werten.
// s = ExpandEnvPath$("%APPDATA%\XProfan\Test\Test.data")
// ALLUSERSPROFILE, APPDATA, COMPUTERNAME, ProgramFiles, SystemDrive, SystemRoot, USERPROFILE
// El Werte existieren no en allen Environments. Was no existiert, se simplemente no traducido.
// %ALLUSERSPROFILE - el "ALL USERS" Profilordner
// %APPDATA% - Ordner para Anwendungsdaten des aktuellen Benutzers (Vista u höher)
// %COMPUTERNAME% - el Systemname
// %ProgramFiles% - el "Program Files" Ordner (Programmdateien)
// %SystemDrive% - el Sistema-Laufwerksbuchstabe (z.B. C:)
// %SystemRoot% - el Sistema-Stamm-Ordner (z.B. C:\Windows)
// %USERPROFILE% - el aktuelle Benutzer-Perfil (z.B. C:\USERS\<username>)
Parámetros cadena EnvPath
Declarar mem inbuf,outbuf, int Size,Ok, cadena erg
Size = 32768// max.
Dim inbuf,Size
Dim outbuf,Size
String inbuf,0 = EnvPath
Ok = Externo("shlwapi.dll","PathUnExpandEnvStringsA", inbuf, outbuf, Size)
Case Ok : erg = String$(outbuf,0)
Disponer inbuf,outbuf
Volver erg
ENDPROC
Na Por favor,, va doch (zumindest uno su)
Keywords: Environment, ExpandEnvironmentStrings |
|
|
| |
|
|