[REBOL] Re: Environment variables
From: dan::rolander::com at: 2-Jan-2001 5:45
Helmut, here's one way to do it:
REBOL []
comment {
Win32 API Declarations:
DWORD GetEnvironmentVariable(
LPCTSTR lpName, // environment variable name
LPTSTR lpBuffer, // buffer for variable value
DWORD nSize // size of buffer
);
BOOL SetEnvironmentVariable(
LPCTSTR lpName, // environment variable name
LPCTSTR lpValue // new value for variable
);
}
kernel32: make object! [
lib: load/library %kernel32.dll
win32api-GetEnvironmentVariable: make routine! [
name [string!]
buffer [string!]
size [
struct! [
size [integer!]
]
]
return: [integer!]
] lib "GetEnvironmentVariableA"
get-env: func [name [string!] /local size][
buffer: copy ""
repeat sp 255 [buffer: append buffer " "]
size: make struct! [size [integer!]] reduce [length? buffer]
win32api-GetEnvironmentVariable name buffer size
trim buffer
]
win32api-SetEnvironmentVariable: make routine! [
name [string!]
value [string!]
return: [integer!]
] lib "SetEnvironmentVariableA"
set-env: func [name [string!] value [string!] ][
win32api-SetEnvironmentVariable name value
]
]
test: does [
env: kernel32/get-env "REBOL_HOME"
print ["REBOL_HOME = " env]
kernel32/set-env "REBOL_HOME" "C:\New Dir"
env: kernel32/get-env "REBOL_HOME"
print ["REBOL_HOME = " env]
]