/* プログラム名 Ver 1.0 (2019/12/3) --------------------------------------------------------------------------------------------------*/ #packopt name "実行ファイル名" ;実行ファイル自動作成を行った時に出力する実行ファイル名 #packopt type 0 ;実行ファイルのタイプ(0:通常実行ファイル、1:フルスクリーン、2:スクリーンセーバー.scr) #packopt xsize "800" ;デフォルトウィンドウサイズ #packopt ysize "600" #packopt hide 0 ;起動時のウィンドウ表示(0:表示、1:非表示 gsel命令で表示化) #packopt orgpath 0;実行時にカレントディレクリを移動(0:移動する 1:移動しない) #packopt icon "テストアイコン.ico" ;作成する実行ファイルのアイコンを埋め込む ;#uselib "filename" ;外部DLLの指定 ;#func 新規名称 関数名 タイプ ;外部DLL呼び出し命令登録 ;#include ".as" ; #const BufSize 500 ;定数宣言(文字列は扱えません) #define Debug dialog "デバッグ停止" ;置き換え文字列を登録 ;変数定義------------------------------------------------------------------------------------------- WindowTitle = "タイトル Ver.1.0" ;ウィンドウタイトル InFilePath = dir_cur + "\\ひな形Setting.ini" ;入力ファイル名 OutFilePath = dir_cur + "\\ひな形Output.txt" ;出力ファイル名 sdim Buf, BufSize ;バッファサイズ指定 WorkVal = 0 ;Work用 WorkStr = "" ;Work用 WorkCount = 0 ;Work用 WorkFlag = False ;Work用(True:真 False:偽) CustomFlag = 0 ;起動時処理----------------------------------------------------------------------------------------- onexit *bye ;ウィンドウXボタン押下時処理 ;dllファイル有無確認 /* exist dir_cur + "\\hspext.dll" ;ファイル有無確認 if strsize=-1 { dialog "実行ファイルがあるフォルダ内に、hspext.dllが見つかりません。", 1, WindowTitle end } */ ;入力ファイル読み込み /* exist InFilePath ;ファイル有無確認 if strsize<0 { dialog InFilePath + "\nが見つかりません。" setStr = 0 setVal = 0 } else { notesel SettingBuf noteload InFilePath noteget setStr, 1 noteget WorkStr, 3 setVal = int(WorkStr) } */ ;出力ファイルの確認 /* exist OutFilePath ;ファイル有無確認 if strsize<0 { WorkBuf = "ひな形テスト出力" bsave OutFilePath, WorkBuf OutFileOffset = 0 } else { dialog OutFilePath + "\nが見つかりました。追記します。" OutFileOffset = strsize } */ ;0バイトのファイル作成(上書き) ; empty = 0 : bsave "test_0byte.txt" ,empty, 0 ;画面の生成----------------------------------------------------------------------------------------- ;ウィンドウ設定 screen 0, 800, 600, , 0, 0 ;ID, ウィンドウサイズX, Y, モード, 表示位置X, Y objmode 0, 1 ;オブジェクト文字フォント、 title WindowTitle ;ボタン pos 10, 10 : objsize 80, 60 button gosub "ボタン名", *B_ON B_ObjID = stat ;リストボックス pos 100, 10 : objsize 80, 40 listbox ListStr, 24, "リスト1\nリスト2\nリスト3" ;コンボボックスオブジェクトの表示位置 pos 10, 80 : objsize 180 combox CombStr, 100, "コンボボックス1\nコンボボックス2\nコンボボックス3\nコンボボックス4" ;入力ボックス font "MS ゴシック", 14, 0 pos 200, 10 : mes "入力欄" IBStr = "" pos 250, 10 input IBStr, 160, 25, 10 ;最大文字数 10バイト ;チェックボックス CB_Flag = 0 pos 450, 10 : objsize 60, 25 chkbox "選択", CB_Flag ;ボタン(太枠)BS_DEFPUSHBUTTON pos 550, 10 button gosub "枠強調", *B_ON sendmsg objinfo(stat, 2), $F4 , $1 ;チェックボックス(ラジオボタン)変数に1が入ったものにチェックが入ります。 s2 = 1 chkbox "あ", s1 sendmsg objinfo(stat, 2), $F4, $9 chkbox "い", s2 sendmsg objinfo(stat, 2), $F4, $9 chkbox "う", s3 sendmsg objinfo(stat, 2), $F4, $9 ;ボタン(ファイル選択) pos 650, 10 : objsize 120, 60 button gosub "ファイル選択", *FileB_ON FileB_ObjID = stat ;カスタムボタン ;仮想画面にボタン描画 buffer 1, 80, 120, 2 ;ID=1 サイズ80x120 gosub *RED_BTN pos 200, 50 : objsize 80, 60 objimage 1, 0, 0, 0, 61 ;カスタムボタン設定 button gosub "カスタム", *CB_ON CB_ObjID = stat objimage -1 ;カスタムボタン解除 ;メッセージボックス sdim MBBuf ;表示用バッファ pos 0, 125 : objsize 120, 20 mesbox MBBuf, 800, 250, 4, 0 MB_ObjID = stat ;以降のボタンはWin32 API関数を利用して作成 #include "user32.as" ; テキスト表示位置の変更 (BS_LEFT/BS_RIGHT/BS_TOP/BS_BOTTOM) ; $100=左寄り、$200=右寄り、$400=上寄り、$800=下寄り ; 複数個組み合わせれば「左下」に表示 pos 300, 50 : objsize 80, 50 button "文字位置", *B_ON SetWindowLong objinfo(stat, 2), -16, $50000000 | $100 | $800 ; 複数行テキスト・縦書き表示風にも (BS_MULTILINE) ; ボタンに収まるよう文字列を自動改行 (「\n」で手動改行) pos 400, 50 button "複数行\nボタン", *B_ON SetWindowLong objinfo(stat, 2), -16, $50000000 | $2000 ;初期設定------------------------------------------------------------------------------------------- *INITIAL ;メインルーチン------------------------------------------------------------------------------------- *MAIN stop ;処理停止 ※オブジェクトなどの処理は可能 /* repeat wait 10 ;待ち時間(10ms) await;待ち時間(1ms) loop */ ;終了処理------------------------------------------------------------------------------------------- *bye bsave OutFilePath, MBBuf, strlen(MBBuf) - 1, OutFileOffset ;バッファをファイルにセーブ end ;サブルーチン--------------------------------------------------------------------------------------- *B_ON ;ボタン処理 WorkCount++ MBBuf = MBBuf + "ボタンが押された。(" + WorkCount + ")\n" sendmsg objinfo(MB_ObjID, 2), 0x000C, 0, varptr(MBBuf) ;32KB文字制限の回避。objprm MB_ObjID, MBBufの代替 sendmsg objinfo(MB_ObjID, 2), 0xb6, 0, 99999 ;mesboxのキャレットを最下行に color 0, 0, 0 pos 0,570:mes "ボタンが押された。(" + WorkCount + ")\n" pos 0, 380 : gcopy 0, 0, 395, 800, 600 ;画面スクロール pos 0, 585 : gcopy 0, 0, 160, 800, 175 ;最下行クリア return *FileB_ON ;ファイル選択 ボタン処理 dialog "", 16, "すべてのファイル" if stat=1 { MBBuf = MBBuf + refstr + "\n" sendmsg objinfo(MB_ObjID, 2), 0x000C, 0, varptr(MBBuf) ;32KB文字制限の回避。objprm MB_ObjID, MBBufの代替 sendmsg objinfo(MB_ObjID, 2), 0xb6, 0, 99999 ;mesboxのキャレットを最下行に } return *CB_ON ;カスタム ボタン処理 if CustomFlag { gosub *RED_BTN CustomFlag = 0 } else { gosub *GREEN_BTN CustomFlag = 1 } objprm CB_ObjID, "カスタム" MBBuf = MBBuf + "カスタムボタンが押された。\n" sendmsg objinfo(MB_ObjID, 2), 0x000C, 0, varptr(MBBuf) ;32KB文字制限の回避。objprm MB_ObjID, MBBufの代替 sendmsg objinfo(MB_ObjID, 2), 0xb6, 0, 99999 ;mesboxのキャレットを最下行に return *RED_BTN ;赤ボタン描画 gsel 1 color $80, $80, $80 boxf 3, 3, 79, 59 color $FF boxf 0, 0, 77, 57 color $FF boxf 2, 62, 79, 119 gsel 0 return *GREEN_BTN ;緑ボタン描画 gsel 1 color $80, $80, $80 boxf 3, 3, 79, 59 color , $FF boxf 0, 0, 77, 57 color , $FF boxf 2, 62, 79, 119 gsel 0 return /*以下はリファレンス ************** 以下は構文の説明 ****************** ●算術演算子(優先順) *、/、\(割り算の余り) +、- 比較演算子 &、|、^、<<(左ビットシフト)、>>(右ビットシフト) 優先順に従って左側から順に計算される。 ●条件演算子 =、== 等号 !=、! 不等号 & かつ | または > 左辺が大きい < 左辺が小さい >= 左辺が大きいか等しい <= 左辺が小さいか等しい ●代入演算子 =、== a = b は、aにbを代入」 += a += b は、a = a + b に相当 -= a -= b は、a = a - b に相当 *= a *= b は、a = a * b に相当 /= a /= b は、a = a / b に相当 \= &= |= ++ インクリメント、1の加算 a++は、a = a + 1 に相当 ※a+でも可 -- デクリメント、1の減算 a--は、a = a - 1に相当 ※a-でも可 ●制御文 if 条件式 : 真のときの処理 if 条件式 : 真のときの処理 : else : 偽のときの処理 if 条件式 { ;真のときの処理 } else { ;偽のときの処理 } switch a ; aを比較対象とする case 0 ;0だった場合の処理 swbreak case 1 ;1だった場合の処理 swbreak default ;上記以外の場合の処理 swbreak swend repeat [繰り返す回数, cntの初期値] ;繰り返し処理 ※繰り返す度にシステム変数cntをカウントアップ。ただしloopを抜けるとcntは"0"になる break ;繰り返し終了 loop do ;繰り返し処理 until 条件式 while 条件式 ;繰り返し処理 wend for 変数, 初期値, 終値, 増分 ※for文は処理速度が遅くなる(repeatの約3倍) ;繰り返し処理 next foreach 配列変数 ;繰り返し処理 loop goto *ラベル名 gosub *ラベル名 *ラベル名 return システム変数代入値 ;数値を指定した場合statに代入 文字列を指定した場合refstrに代入 実数値を指定した場合refdvalに代入されます。 ●関数 abs() 整数の絶対値を返す int() パラメーターを整数に変換する double() パラメーターを実数に変換する str() パラメーターを文字列に変換する strlen() 文字列の長さを返す length 変数の持つ配列要素数を返す(1次元) 2次元はlength2、3次元はlength3 limit() 整数値を範囲内に収める limitf() 実数値を範囲内に収める gettime(0〜7) 日付・時間を返す 0:年 1:月 2:曜日(0〜6) 3:日 4:時(0〜24) 5:分 6:秒 7:ミリ秒 dirinfo(0〜4) 各種フォルダのパス文字列を取得する。 0:カレントフォルダ 1:自分自身が置かれているフォルダ 2:Windowsフォルダ 3:システムフォルダ 4:コマンドライン文字列 sysinfo() システム情報を取得する rnd(1〜32768) 乱数を発生 10を指定した場合は0〜9までの乱数を返します。 randomize [シード値] シード値を省略するとシステムタイマー(コンピュータの時計)の値が使用される rnd(10) 10までの乱数を発生する ●オブジェクト objinfo ウィンドウオブジェクトに関する情報を取得する button ボタン 押されると指定ラベルのプログラムを実行 input 入力ボックス 数値や文字列を入力 mesbox メッセージボックス 複数行の文字列を入力 chkbox チェックボックス ON/OFFチェックマーク切り替え combox コンボボックス 複数要素から選択可能な枠 listbox リストボックス 複数要素から選択可能な枠 clrobj 最初のオブジェクトID, 最後のオブジェクトID オブジェクトの削除 ●ダイアログ dialog "message", ボックスの種類, "option" 種 説明 "message" "option" 返り値 0 情報メッセージ ボタン:OK 表示文字列 タイトル名 stat=OK:1 1 警告メッセージ ボタン:OK 表示文字列 タイトル名 stat=1 2 情報メッセージ ボタン:はい、いいえ 表示文字列 タイトル名 stat=はい:6、いいえ:7 3 警告メッセージ ボタン:はい、いいえ 表示文字列 タイトル名 stat=はい:6、いいえ:7 16 ファイルを開くダイアログ 拡張子 ファイル種 stat=キャンセル:0、正常:1、refstr=ファイルパス文字列 17 ファイルを名前を付けて保存 拡張子 ファイル種 stat=キャンセル:0、正常:1、refstr=ファイルパス文字列 32 「色の選択」カラー非表示状態 - - stat=キャンセル:0、正常:1、ginfo関数 モード16-18 ginfo_r、ginfo_g、ginfo_b RGBカラー値 33 「色の選択」カラー表示状態 - - stat=キャンセル:0、正常:1、ginfo関数 モード16-18 ginfo_r、ginfo_g、ginfo_b RGBカラー値 ●ウインドウ操作 screen ウィンドウID, サイズX, サイズY, 画面モード, 座標X, 座標Y 新しいウィンドウとして初期化。ディスプレイ上に表示 (このウィンドウは標準でサイズを変更することができます。) システム変数hwndにハンドル値が代入される。 buffer ウィンドウID, サイズX, サイズY, 画面モード メモリ上に仮想画面とし初期化。ディスプレイ上には表示されません。 gsel ウィンドウID, スイッチ 描画の対象を変更。スイッチ -1:非表示 0:影響なし 1:アクティブになる 2:アクティブになり常に最前面になる ginfo ウィンドウに関する情報を取得する sendmsg ハンドル値, メッセージID, wParam, lParam Win32 APIのSendMessage関数を呼び出す。ウィンドウ、オブジェクトに様々な効果を与える。 例)sendmsg hwnd, $112, $F020 ;ウィンドウの最小化 sendmsg hwnd, $112, $F030 :ウィンドウの最大化 sendmsg hwnd, $112, $F120 ;ウィンドウを元に戻す ・Tips ウィンドウID 0は、マウスによるウィンドウ枠のドラッグでサイズ変更ができない固定ウィンドウです。 ただし、Win32 API関数を呼び出す(#include "user32.as")ことでスタイルの変更が可能。(最大化ボタン有効、閉じるボタン無効など) 実行ファイルを起動した際の初期画面を見えないようにするには、#packopt hide 1 で非表示にしてgsel命令で表示するようにする。 ●グラフィックス表示 pos X, Y カレントポジション設定 color 0〜255 カラー設定 palette p1,p2,p3,p4,p5 設定されているパレットの色データを変更します。 font "フォント名", サイズ, スタイル フォント設定 sysfont 0〜17 システム標準のフォントを選択。省略時は標準システムフォントが選択されます。 mes 文字列 文字列を表示 pset X, Y 点を描画する。 line 終点座標X, 終点座標Y, 始点座標X, 始点座標Y 終点と始点を結ぶ直線を描画する。 circle 指定した四角形に収まる円を描画する。 boxf 塗りつぶしの四角形を描画する。 gcopy ウィンドウID, コピー元座標X, 元座標Y, サイズX, サイズY カレントポジションに画像をコピー gzoom サイズX, サイズY, ウィンドウID, コピー元座標X, 元座標Y, 元サイズX, 元サイズY, モード カレントポジションに変倍して画面コピー pget 座標X, 座標Y 画面上の1ドットの色データを読みだします。 cls 0〜4 指定した色で画面クリア 0=白 1=明るい灰色 2=灰色 3=暗い灰色 4=黒 ●画像ファイル 標準で対応する形式 bmp、jpg、gif、ico picload "filename", モード [画像ファイルをロード] bmpsave "filename.bmp" 現在の画面イメージをそのままBMP形式の画像ファイルとしてセーブします。 ●文字列操作 \n(改行)、\t(TAB)、\r(CR)、\"(")、\\(\) 注)文字列を+で結合する際、左側が数値の場合は以降の文字列を数値に変換して計算する。 strlen() 文字列の長さ getstr 読出変数, 書込変数, index, 区切文字, 最大文字数 [バッファから文字列読み出し] instr(変数, index, 検索文字列) [文字列の検索をする] strf("format", 数値) [数値を指定した文字列表記に変換] strmid(読出変数, index, 文字数) [文字列の一部を取り出す] ※indexに-1を指定すると右から取り出す split 元文字列, "区切り文字", 代入する変数1, 代入する変数2, ・・・ [区切文字列で分割して、指定した変数へと代入する] ●メモリバッファ 変数が管理するメモリバッファのサイズは可変長で、Windowsが許す限りのメモリを扱うことができ上限はありません。 デフォルトで64バイト分の領域が確保されます。 dim 変数, 要素数... [配列変数を作成] 内容はすべて0にクリアされます。※ddim[実数型配列]、dimtype[指定タイプ] sdim 変数, 文字数, 要素数 [文字列型配列変数を作成]要素数は省略可 ※64文字以下を指定しても64文字分確保される。 dup コピー変数, 元変数 [クローン変数を作成] ※dupptr 変数名,p1,p2,p3[ポインタからクローン変数を作成] peek(変数, index) [バッファから1byte読み出し] ※wpeek、lpeek poke 変数, index, 書込値 [バッファに1byte書き込み] ※wpoke、lpoke memcpy コピー先の変数, コピー元の変数, コピーするサイズ, コピー先のオフセット, コピー元のオフセット [メモリブロックのコピー] memset 変数, 変更する1バイト値, 変更するバイトサイズ, メモリオフセット [メモリブロックのクリア] 指定した1バイト値でメモリ領域を一括変更する。 memexpand 変数, 確保するバイトサイズ [メモリブロックの再確保] 文字列型変数のバッファサイズを再確保します。 varptr(ポインタを調べる変数または命令) 外部DLLやプログラムで扱う場合には、変数が扱うメモリバッファのポインタを varptr関数により取得することが可能です。 ●メモリノートパッド命令 notesel 変数 メモリノートパッドとして扱う変数バッファ指定。note〜命令を利用する際に必ず呼ぶ必要があります。バッファ確保はHSP内部で行うのでsdim命令は不要です。 noteload ファイルパス, サイズ ファイルから内容読み込み。サイズ指定がなければファイル全体を読み込みます。ファイルの先頭からしか読み込めない。 noteadd 文字列, 行, モード 指定行に内容追加 indexは0〜、省略または-1で最終行 モード1で上書き ※ \nを利用すれば一度に複数行の挿入ができます。 noteget 変数, 行 指定行の内容読み出し notedel 行 指定行の削除 notesave ファイルパス バッファ内容をファイルに書き出し noteunsel 以前に選択されていた変数に復帰する noteinfo(0〜1) メモリノートパッドに関する情報を取得する 0:全体行数、1:全体サイズ(バイト単位) システム変数 notemax、notesizeと同じ。 notemax 全体の行数を取得する。マクロとして使用 notesize 全体のサイズ(バイト数)を取得する。マクロとして使用 notefind(文字列, モード) 特定の文字列を含む行を検索する。関数として使用。モード 0:完全一致した行を検索 1:文字列で始まる行を検索 2:文字列を含む行を検索 ●ソート sortval 配列変数, 並び順 配列変数を数値でソート。0:小さい順 1:大きい順 sortstr 配列変数, 並び順 配列変数を文字列でソート。0:小さい順 1:大きい順 sortnote 変数名, 並び順 メモリノート文字列(\n改行コードで区切られたデータ列)をソート。0:小さい順 1:大きい順 sortget 変数,index 直前に実行されたソート結果の項目が、もともとどの位置にあったかを取得 ●ファイル操作 exist "ファイル名" ;ファイルのサイズ取得(ファイルが存在する場合は、そのファイルサイズをstrsizeに代入。存在しなかった場合は、-1を代入) bcopy "コピー元ファイル名", "コピー先ファイル名" ;ファイルのコピー bload "ファイル名", 変数名, サイズ(Byte), 位置(Byte) ;バッファにファイルをロード。サイズを省略するかマイナス値を指定で変数バッファのサイズが設定されます。 システム変数 strsize:読み込んだデータのサイズ bsave "ファイル名", 変数名, サイズ(Byte), 位置(Byte) ;バッファをファイルにセーブ。サイズを省略するかマイナス値を指定で変数バッファのサイズが設定されます。 delete "ファイル名" ;ファイル削除 chdir "ディレクトリ名" ;ディレクトリ移動 mkdir "ディレクトリ名" ;ディレクトリ作成 dirlist 文字列変数, "ファイルマスク", モード ;ディレクトリ一覧を取得 memfile 変数名, バッファ位置, サイズ ;メモリストリーム設定。ファイルの替わりとして扱うメモリ空間を持った変数を設定します。 chdpm "DPMファイル名", 暗号化キー ;DPMファイル設定 getpath(ファイルパス文字列, タイプ) 0:そのまま 1:拡張子を除いたファイルパス 2:拡張子のみ ドット含む 8:フォルダ部分を除いた拡張子付きファイル名 32:フォルダ名 16:すべて小文字に変換 ●外部プログラム exec ”filename”, mode, ”command” mode=0:通常実行 16:関連付けを実行 32:印刷 +1:HSPタスク実行待ち +2:最小化実行 command=コンテキストメニュー操作名 edit:編集 explore:エクスプローラを起動 open:関連付けアプリで開く print:印刷 properties:プロパティを表示 ・パイプ付き実行 #include "hspext.as" pipeexec 文字列変数, "filename", ウインド表示0〜1 実行ファイルは、パイプを通じて標準入力、標準出力の設定取得 が可能になります。(DOS プロンプトなど) 変数バッファに、実行時の標準出力が格納されます。ウインド表示はデフォルト 0:表示しない pipeexec命令実行後は、必ずpipegetでプロセス終了までを監視 してください。 pipeget 変数 [パイプ付き実行監視] pipeexec命令で実行されたプロセスを監視します。 p1に、パイプの情報を取得するバッファとなる文字列型変数を 指定する必要があります。 pipeexecによるファイル実行の状況は、システム変数statに 返されます。 pipeput 0〜255 [パイプに1byte送る] pipeexec命令で実行中のプロセスに対して、指定したコードを標準入力として送ります。 例)#include "hspext.as" sdim pipeBuf,32000 : pipeexec pipeBuf, "tasklist" sdim getBuf,4096 repeat : wait 10 pipeget getBuf if stat=0 : break loop mes pipeBuf ●モジュール定義 #module #deffunc 命令名 パラメーター型 エイリアス名,… ユーザー命令を定義 #defcfunc ユーザー関数を定義 #global 例)// test1.asの内容 #module #deffunc test1 int prm1 mes "パラメータは、"+prm1+"です。" return 1 #global // test2.asの内容 #include "test1.as" a=543 test1 a mes "STATは、"+stat+"です。" stop ●外部DLL、外部関数 #uselib "filename" 呼び出す外部DLLのファイル名を指定します。 #func 新規名称 "関数名" タイプ名1,… 外部DLLを呼び出すための新しい命令を登録します。#uselib命令により外部DLL名を指定しておく必要があります。 例)#uselib "test.dll" #func test "_func@16" var,int,int,int test a,1,2,3 ; test.dllのfunc(&a,1,2,3)が呼び出される #cfunc 新規名称 "関数名" タイプ名1,… 外部DLLを呼び出すための新しい関数を登録します。 例)#uselib "test.dll" #cfunc test "_func@16" var,int,int,int res=test(a,1,2,3) ; test.dllのfunc(&a,1,2,3)が呼び出される ●割り込み onkey goto/gosub *label キー押下時 システム変数 iparam:文字コード wparam,lparamはWindowsメッセージとして渡されたパラメータがそのまま格納 onkey 0:割り込みを停止 onkey 1:割り込みを再開 onclick goto/gosub *label マウスクリック時 stop命令および、wait、await命令で停止している時に割り込みを受け付けてジャンプを行います。 システム変数 iparam:マウスボタンID wparam,lparamはWindowsメッセージとして渡されたパラメータがそのまま格納 onclick 0:割り込みを停止 onclick 1:割り込みを再開 onexit goto/gosub *label プログラム終了時 onexit 0:割り込みを停止 onexit 1:割り込みを再開 onerror goto/gosub *label エラー発生時 システム変数 wparam:エラー番号 lparam:エラー発生行番号 iparam:0(なし) onerror 0:割り込みを停止 onerror 1:割り込みを再開 oncmd goto/gosub *label, ウィンドウメッセージ 指定したウィンドウメッセージがWindowsから通知された際のラベルジャンプ先を指定しておく命令です。 上記の割り込みメッセージを含め、様々な割り込みに対応できる。 ●キー入力 getkey 変数, キーコード キーコードで指定されたキーボード及びマウスボタンの状態をチェックして変数に代入します。1:ON 0:OFF stick 変数,p2,p3 よく使われるキーボード及びマウスボタンの状態をまとめてチェックして変数に代入します。 ●サウンド mmload "filename",p1,p2 サウンドファイル読み込み mmplay p1 サウンド再生 mmstop サウンド停止 ●デバッグ ※実行ファイル作成時は、この命令は無効になります。 assert 条件式 デバッグウィンドウ表示。条件式が指定された場合には、p1の条件が正しくない場合にのみデバッグウィンドウを表示します。 logmes "message" デバッグメッセージ送信。assert命令によってデバッグウィンドウを表示させておく必要があります。 */