作っていたのですが、オブジェクトファイル(axファイル)を実行するrun命令が時々正常に動作しません。
http://hsp.tv/play/pforum.php?mode=all&num=99806
拡張機能の追加方法
runは古くからある命令のようですが、使用方法などに問題がありますでしょうか?
ヘルプを見ましたが付属サンプルはありませんでした(runの文字列検索結果のみ)
HSPランタイムの場所とか気にする必要があったりしますか?
解決方法を教えていただけると助かります。
-----
run命令後の動作には以下のような症状があります(HSP3.7beta5にて確認)
・正常にaxファイルが起動して動作する(問題なし)
・ウィンドウ消去後フリーズして落ちる
・ウィンドウが起動してフリーズ後に落ちる
・ウィンドウが起動するが文字のみ表示されない
・内部エラーが発生しました(38)表示後にフリーズ(38:外部DLL呼び出し失敗)
・バックグラウンドにexeファイルが残る(タスクマネージャで確認)
-----
確認サンプルスクリプトは以下となります。run1main.exeを実行してください。
事前にhsp/ax/exeファイル作成とdllを準備する必要があります。
run1.hspは「オブジェクトファイル作成」と「実行ファイル自動作成」を
run2.hsp/run3.hspは「オブジェクトファイル作成」を行ってください。
これで、run1main.exe、run1.ax、run2.ax、run3.axが生成されます。
hspda.dllをexe実行フォルダに置いてください(vsave/vload用)
run1.hsp
#include "hspda.as" #packopt name "run1main" exist "hspda.dll":if strsize<0:dialog "no hspda.dll":end onexit *lbl_end exist "var.bin":if strsize>0:vload "var.bin" mes "[run1 - メインメニュー]" mes "a="+a+" b="+b+" c="+c+" s="+s+" f="+f button "run2-本家",*btn_on1 button "run3-拡張",*btn_on2 button "end",*lbl_end stop *btn_on1 f="run1 btn1":b++ vsave "var.bin":run "run2.ax" stop *btn_on2 f="run1 btn2":c++ vsave "var.bin":run "run3.ax" stop *lbl_end exist "var.bin":if strsize>0:delete "var.bin" end
run2.hsp
#include "hspda.as" vload "var.bin" mes "[run2 - 本家]" a=456:s="honke" mes "a="+a+" b="+b+" c="+c+" s="+s+" f="+f button "run1-menu",*btn_on1 stop *btn_on1 f="run2 btn1":b++ vsave"var.bin":run "run1.ax" stop
run3.hsp
#include "hspda.as" vload "var.bin" mes "[run3 - 拡張機能]" a=123:s="exte" mes "a="+a+" b="+b+" c="+c+" s="+s+" f="+f button "run1-menu",*btn_on1 stop *btn_on1 f="run3 btn1":c++ vsave"var.bin":run "run1.ax" stop