Gruppe
API
Problem
Wie kann ich aus der Autoxec.bat eine Umgebungsvariable auslesen?
StandardModule: basMain
Declare Function GetEnvironmentVariableA Lib "Kernel32" _
(ByVal lpName As String, ByVal lpBuffer As String, _
ByVal nsize As Long) As Long
Declare Function GetDOSEnvironment Lib "Kernel" () As Long
Declare Function lstrcpy Lib "Kernel" Alias "lStrCpy" _
(ByVal lpString1 As Any, ByVal lpString2 As Any) As Long
Sub Test()
MsgBox GetDOSEnvironmentVariable("temp")
End Sub
Function GetDOSEnvironmentVariable(sEnvVar As String) As String
Dim lpszOrigEnv As Long
Dim lpszEnv As Long
Dim szDOSEnv As String
If b32Bit() Then
szDOSEnv = Space(4096)
lpszEnv = GetEnvironmentVariableA(sEnvVar, szDOSEnv, 4096)
GetDOSEnvironmentVariable = Left(szDOSEnv, lpszEnv)
Else
lpszOrigEnv = GetDOSEnvironment()
szDOSEnv = Space$(4096)
lpszEnv = lstrcpy(szDOSEnv, lpszOrigEnv)
szDOSEnv = Trim(szDOSEnv)
szDOSEnv = Left(szDOSEnv, Len(szDOSEnv) - 1)
Do While szDOSEnv <> ""
If Left(szDOSEnv, Len(sEnvVar)) = sEnvVar Then
GetDOSEnvironmentVariable = Mid(szDOSEnv, _
Len(sEnvVar) + 2, Len(szDOSEnv))
Exit Function
End If
lpszOrigEnv = lpszOrigEnv + Len(szDOSEnv) + 1
szDOSEnv = Space$(4096)
lpszEnv = lstrcpy(szDOSEnv, lpszOrigEnv)
szDOSEnv = Trim(szDOSEnv)
szDOSEnv = Left(szDOSEnv, Len(szDOSEnv) - 1)
Loop
End If
End Function
Function b32Bit() As Boolean
Select Case Left(Application.Version, 1)
Case 5
b32Bit = False
Case 7, 8, 9
b32Bit = True
End Select
End Function