スクリプトプリクス トップ >> HSP3 >> HSP3でレジストリを書き込もうとしたときに引っかかりそうな場所

HSP3でレジストリを書き込もうとしたときに引っかかりそうな場所

スポンサーリンク

以下のような記述で「外部DLLエラー」が出るという質問をHSP掲示板で見かけました。
同じような質問が同時に出ていたので、よく躓きそうな問題だなと思い取り上げます。


#include "hspext.as"
regkey 1,"Software\\hogefuga\\hogefuga",0
getreg regchk,"option",0 ;ここで外部DLLエラー
if stat!0:setreg alarm,"option",1


#include "hspext.as"
regkey 1,"Software\\hogefuga\\hogefuga",1
setreg alarm,"option",1 ;ここで外部DLLエラー


regkeyのstatとるとよくわかると思いますが、
p3=0;レジストリ読み出しモード
p3=1;レジストリ新規作成モード

p3=0;レジストリ読み出しモードだとレジストリが無いと読み出しに失敗します。
p3=1;レジストリ新規作成モードだと、作成したのに新規作成モードでアクセスすると失敗します。(テストで作成したのにさらに新規作成しようとすると失敗)

失敗しているにもかかわらず、「getreg」や「setreg」を続けて行うと

インクルードしている「hspext.as」が呼び出している「hspexp.dll」に「外部DLLエラー」で怒られるようです。
コードをテストしているうちにわからなくなってしまうのだと思うのですが、
「stat」を確認すればいいだけなので、
「stat」で条件分けしよう!


#include "hspext.as"
regkey 1,"Software\\hogefuga\\hogefuga",0
if (stat=0){
getreg regchk,"option,0
if stat=0:rt="レジゲット!"
if stat!0:setreg alarm,"option",1:rt="読出レジセット"
} else {
regkey 1,"Software\\hogefuga\\hogefuga",1
if stat=0:setreg alarm,"option",1:rt="新規レジセット"
if stat!0:rt="新規レジセット失敗"
}
mes rt
stop


こんな感じで確認が取れるはずです。
なんかファイルやフォルダの存在確認と似てますね。



スポンサーリンク
posted by シモン at 10:48 | Comment(0) | TrackBack(0) | HSP3
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。