〜 システム 〜
環境変数を取得 (要KERNEL32.DLL)

HSPから環境変数を取得してみるサンプルモジュールの紹介です。
ココで言う環境変数とは、Windows、またはWindows環境下で動作するソフトが使う
何らかの属性やパス等のデータを保存しておく変数のことで、
「システムのプロパティ」−「詳細設定タブ」−「環境変数()」で確認・設定することが出来ます。
コチラのHSP2サンプルのように環境変数を知る必要がある場合は、
API関数GetEnvironmentVariableを使った下記のサンプルの要領で取得してください。
GetEnvironmentVariableは第1引数から順に「変数名」「取得バッファ」「バッファサイズ」です。
尚、取得とは逆の設定方法についてはコチラを参照してください。
	

getev 環境変数名, 受取先変数, 最大サイズ
環境変数名取得する環境変数名を指定する。
受取先変数取得した変数内容受取先の文字列型変数を指定する。
最大サイズ受取先変数に格納する最大バイト数を指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
	ll_libload kernel, "kernel32.dll"
	ll_getproc GetEnvironmentVariable, "GetEnvironmentVariableA", kernel

#module
#deffunc getev str, val, int
	mref name, 32 : mref ev, 25 : mref size, 2
	ll_getptr name : ll_ret prm.0
	ll_getptr ev : ll_ret prm.1
	prm.2 = (size = 0) * 64 + size
	memset ev, , prm.2
	ll_callfunc prm, 3, GetEnvironmentVariable@
	return
#global

	max = 1000
	sdim buf, max
	getev "TEMP", buf, max
	mes buf
	stop

受取先 = getev(環境変数名)
受取先取得した変数内容の受取先を指定する。
環境変数名取得する環境変数名を指定する。
最大サイズ取得する最大バイト数を指定する。尚、省略時は260バイトが適用される。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#uselib "kernel32.dll"
#func	global GetEnvironmentVariable "GetEnvironmentVariableA" str, var, int

#module
#defcfunc getev str name, int size, local i, local s
	i = (size = 0) * 260 + size
	sdim s, i
	GetEnvironmentVariable name, s, i
	return s
#global

	mes getev("TEMP")