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

HSPから環境変数を設定してみるサンプルモジュールの紹介です。
ココで言う環境変数とは、Windows、またはWindows環境下で動作するソフトが使う
何らかの属性やパス等のデータを保存しておく変数のことですが、
API関数SetEnvironmentVariableを使って設定するサンプルを紹介しています。

取得を行うAPI関数GetEnvironmentVariableはシステム環境変数をも取得することが可能なので、
逆のAPI関数SetEnvironmentVariableを使えばシステム環境変数として設定できるものと思いがちですが
API関数SetEnvironmentVariableは現在のプロセスだけに有効な環境変数を設定するものなので、
「システムのプロパティ」−「詳細設定タブ」−「環境変数()」では確認することが出来ません。
恒久的に保持される環境変数のことをシステム環境変数と呼んでおり、
設定するにはコチラで紹介しているレジストリ経由で行う必要があります。

設定失敗であればstatに0が、成功であれば1が返るようになっていますが、
設定内容を確認したいのであればコチラの取得方法を使ってみてください。
API関数SetEnvironmentVariableは第1引数から順に「変数名」「設定テキスト」を設定してください。
削除についてはINIファイルの削除方法と同様にして、
設定を行うAPI関数の設定値にNULL(=0)を設定すれば削除するようになってます。
具体的な削除を行うサンプルについてはコチラを参照してください。
	

setev 環境変数名, 設定テキスト
環境変数名設定する環境変数名を指定する。尚、設定に成功すればstatに1が、失敗なら0がセットされる。
設定テキスト現在のプロセスの環境変数に設定する設定内容を指定する。

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

#module
#deffunc setev str, str
	mref name, 32 : mref ev, 33
	mref stt, 64
	ll_getptr name : ll_ret prm.0
	ll_getptr ev : ll_ret prm.1
	ll_callfunc prm, 2, SetEnvironmentVariable@
	ll_ret prm : stt = prm
	return
#global

	setev "HSPBC", "http://www.rinku.zaq.ne.jp/ultimate/"
	if stat : mes "正常に設定しました" : else : mes "設定に失敗しました"
	stop

setev 環境変数名, 設定テキスト
環境変数名設定する環境変数名を指定する。尚、設定に成功すればstatに1が、失敗なら0がセットされる。
設定テキスト現在のプロセスの環境変数に設定する設定内容を指定する。

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

#module
#deffunc setev str name, str value, local s
	s = value
	SetEnvironmentVariable name, varptr(s)
	return
#global

	setev "HSPBC", "http://www.rinku.zaq.ne.jp/ultimate/"
	if stat : mes "正常に設定しました" : else : mes "設定に失敗しました"