Italia
Fonte/ Codesnippets

reg_expand_sz, Environment

 

Michael
W.
Da ich mehrmals circa 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 per 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-Profilo (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


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

4.154 Views

Untitledvor 0 min.
p.specht18.11.2021
Peter Max Müller18.11.2021
Wilfried Friebe17.11.2021
RudiB.17.11.2021
Di più...

Themeninformationen

Dieses Thema hat 1 subscriber:

Michael W. (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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