Deutsch
Quelltexte/ Codesnippets

reg_expand_sz, Environment

 

Michael
W.
Da ich mehrmals über diesen Registry-Typ gestolpert bin, habe ich einfach mal zwei Möglichkeiten getestet um an den korrekten String zu gelangen.
Declare string s
Cls
Print " ---------- ExpandEnvStr$(\q%path%\q)"
Print "PATH =",ExpandEnvStr$("%path%")
Print " ----- "
Print "AppData =",ExpandEnvStr$("%APPDATA%")
Print " ----- "
Print "UserProfile =",ExpandEnvStr$("%USERPROFILE%")
Print " ----- "
Print "Computername =",ExpandEnvStr$("%COMPUTERNAME%")
Print " ---------- GetEnvVars$()"
s = GetEnvVars$()
Print s
Print "Das sind", Len( s, "," ), "Environment-Variablen."
Print " ---------- ExpandEnvPath$(\q%APPDATA%\XProfan\Test\Test.data\q)"
Print ExpandEnvPath$("%APPDATA%")
Print " ---------- "
WaitKey
End
// intern
//   Wert$ = GetEnv$(EnvVar$)
//   SetEnv EnvVar$, Wert$

Proc ExpandEnvStr$

    // einen Registry-String des Typs REG_EXPAND_SZ enträtseln
    //    s = ExpandEnvStr("%path%")
    // Groß-/Kleinschreibung der Env-Variablen-Namen ist egal.
    Parameters string EnvStr
    Declare mem inbuf,outbuf, int Size, string erg
    Size = 32768// max.
    Dim inbuf,Size
    Dim outbuf,Size
    String inbuf,0 = EnvStr
    External("kernel32.dll","ExpandEnvironmentStringsA", inbuf, outbuf, Size)
    erg = String$(outbuf,0)
    Dispose inbuf,outbuf
    Return erg

EndProc

Proc GetEnvVars$

    // Liefert einen Komma-saparierten String
    // mit allen Variablennamen des Environments zurück
    //    s = GetEnvVars$()
    Declare mem buf
    Declare long Size, EnvAdr, p, i
    Declare string s, tmp, erg
    Size = 32768// max.
    Dim buf,Size
    EnvAdr = External("kernel32.dll","GetEnvironmentStringsA")
    buf = EnvAdr// bearbeiten mittels Bereich
    Clear p, erg
    s = String$(buf,p)

    While Len(s) > 0

        tmp = Trim$(SubStr$(s,1,"="))
        Case Len(tmp) : erg = erg + "," + tmp
        Inc p, Len(s) + 1
        s = String$(buf,p)

    EndWhile

    Dispose buf
    External("kernel32.dll","FreeEnvironmentStringsA",EnvAdr)
    Case Len(erg) : erg = Del$(erg,1,1)
    Return erg

EndProc

// der hier will bei mir leider nicht...

Proc ExpandEnvPath$

    // Ersetzt bestimmte Ordnernamen in einen vollständig qualifizierten Pfad mit ihren zugehörigen Werten.
    //   s = ExpandEnvPath$("%APPDATA%\XProfan\Test\Test.data")
    //    ALLUSERSPROFILE, APPDATA, COMPUTERNAME, ProgramFiles, SystemDrive, SystemRoot, USERPROFILE
    // Die Werte existieren nicht in allen Environments. Was nicht existiert, wird einfach nicht übersetzt.
    //    %ALLUSERSPROFILE - der "ALL USERS" Profilordner
    //    %APPDATA% - Ordner für Anwendungsdaten des aktuellen Benutzers (Vista u höher)
    //    %COMPUTERNAME% - der Systemname
    //    %ProgramFiles% - der "Program Files" Ordner (Programmdateien)
    //    %SystemDrive% - der System-Laufwerksbuchstabe (z.B. C:)
    //    %SystemRoot% - der System-Stamm-Ordner (z.B. C:\Windows)
    //    %USERPROFILE% - das aktuelle Benutzer-Profil (z.B. C:\USERS\<username>)
    Parameters string EnvPath
    Declare mem inbuf,outbuf, int Size,Ok, string erg
    Size = 32768// max.
    Dim inbuf,Size
    Dim outbuf,Size
    String inbuf,0 = EnvPath
    Ok = External("shlwapi.dll","PathUnExpandEnvStringsA", inbuf, outbuf, Size)
    Case Ok : erg = String$(outbuf,0)
    Dispose inbuf,outbuf
    Return erg

EndProc


Na bitte, geht doch (zumindest einer davon)

Keywords: Environment, ExpandEnvironmentStrings

 
Alle Sprachen
System: Windows 8/10, XProfan X4
Programmieren, das spannendste Detektivspiel der Welt.
13.08.2016  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

4.172 Betrachtungen

Unbenanntvor 0 min.
p.specht18.11.2021
Peter Max Müller18.11.2021
Wilfried Friebe17.11.2021
RudiB.17.11.2021
Mehr...

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

Michael W. (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie