; ; HSP help manager用 HELPソースファイル ; (先頭が「;」の行はコメントとして処理されます) ; %type 拡張命令 %ver 2.61 %note hspext.asをインクルードすること。 %dll hspext %date 2002/12/01 %author onitama %url http://www.onionsoft.net/ %index aplsel 任意のウィンドウ捕獲 %group OSシステム制御命令 %prm "window name",p1 "window name" : 取得するウィンドウのタイトル名 p1=0〜(0) : 開始ID %inst 指定したウィンドウを捕獲して、メッセージを送信する準備をします。 ^ "window name" に、ウィンドウのタイトルに表示されている文字列を指定する ことで、ウィンドウを検索します。 "window name"は、終わりの文字列を省略することが可能です。 たとえば、"HSPスクリプトエディタ"という名前のウィンドウは、"HSP" だけでも、"HSPスクリ"という文字列でもマッチします。 ただし、同じ名前のタイトルがあった場合には、どのウィンドウがマッチする かは不明になります。 ^ p1で開始IDを指定することで検索を開始する検索IDを決めることができます。 この検索IDは、 すべてのウィンドウ (およびタスク) のID番号で、0から順番 に値がつけられています。 「aplsel "",p1」と記述すると、検索IDがp1のウィンドウを捕獲することがで きます。 ^ aplsel命令が実行されて、ウィンドウの検索に成功した場合は、システム変数 statに0が代入されて、システム変数 refstrに正確なウィンドウタイトル名が 代入されます。 ウィンドウの検索に失敗した場合は、システム変数 statに1が代入されメッセ ージの送信を行なうことはできません。 %href aplobj aplact aplfocus aplstr aplkey aplkeyd aplkeyu aplget apledit %index aplobj 任意のオブジェクト捕獲 %group OSシステム制御命令 %prm "object name",p1 "object name" : 取得するオブジェクトのクラス名 p1=0〜(0) : 開始オブジェクトID %inst aplsel命令で捕獲したウィンドウに属するオブジエクト(コントロール)を捕獲 して、メッセージを送信する準備をします。 ^ "object name" に、オブジェクト(コントロール)のクラス名を指定することで 、オブジェクトを検索します。 ^ p1で、開始IDを指定することで検索を開始する検索オブジェクトIDを決めるこ とができます。このIDは、0から順番に値がつけられています。 「aplsel "",p1」と記述すると、オブジェクトIDを捕獲することができます。 ^ aplobj命令が実行されて、オブジェクトの検索に成功した場合は、システム変 数 statに0が代入されて、システム変数refstrに正確なオブジェクトのクラス 名が代入されます。ウィンドウの検索に失敗した場合は、システム変数statに 1が代入され、メッセージの送信を行なうことはできません。 %href aplsel aplact aplfocus aplstr aplkey aplkeyd aplkeyu aplget apledit %index aplact ウィンドウをアクティブにする %group OSシステム制御命令 %inst aplsel命令、およびaplobj命令で捕獲したウィンドウをアクティブにして、キ ーボード入力が可能な状態にします。 ^ aplkey命令などで、 HSP以外のウィンドウにキーを送信する場合には、aplact 命令で、ウィンドウをアクティブにしておく必要があります。 %href aplsel aplobj aplfocus aplstr aplkey aplkeyd aplkeyu aplget apledit %index aplfocus キー送信先をデフォルトにする %group OSシステム制御命令 %inst キー送信の対象となるウィンドウをデフォルトに戻します。 ^ デフォルト設定では、現在アクティブなウィンドウの、キーボード入力フォー カスがあるオブジェクトに対してキー送信されます。 %href aplsel aplobj aplact aplstr aplkey aplkeyd aplkeyu aplget apledit %index aplstr 文字列をキー送信 %group OSシステム制御命令 %prm "strings" "strings" : キー送信する文字列 %inst "strings" で指定した文字列を、キーボード入力データとして、捕獲先のオブ ジェクトに送信します。 ^ aplstr命令は文字列をそのまま送信することができますが、 [ALT]キーなどの 特殊キーの情報は送信できません。 aplstr命令は、キーの情報をキューにためるだけです。 実際に押した結果を反映するためには、waitや await命令を後に入れる必要が あります。一度に大量の情報を送りすぎると、キューがあふれてうまく送信さ れなくなる可能性があります。 aplstr命令は、すべてのアプリケーションにおいて、認識されるとは限りませ ん。aplstr命令の送信を受け付けない場合は、aplkey命令などで試してみてく ださい。 %href aplsel aplobj aplact aplfocus aplkey aplkeyd aplkeyu aplget apledit %index aplkey キーコード送信 %group OSシステム制御命令 %prm p1,p2 p1=0〜(0) : キーコード p2=0〜(0) : 特殊キーコード ^p ( 1 = SHIFT / 2 = CTRL / 4 = ALT ) ^p %inst キーを押した情報を捕獲先のオブジェクトに送信します。 ^ p1で、キーコードを指定します。これは、getkey命令で使用しているキーコー ドと同一のものです。(下の表を参照) ^ p2で特殊キーの指定をします。 1ならば、シフトキー、2ならばCTRLキー、4な らばALTキーが同時に押されていることになります。 ^ aplkey命令は、キーの情報をキューにためるだけです。 実際に押した結果を反映するためには、waitやawait命令を直後に入れる必要が あります。 p1に0を指定した場合には、特殊キーコードの情報のみが送信されます。 ^p キーコード一覧 --------------------------------------------- 3 : キャンセル([CTRL]+[BREAK]) 4 : 3ボタンマウスのまん中のボタン 8 : [BACKSPACE](PC98の[BS]) 9 : [TAB] 13 : [ENTER] 16 : [SHIFT] 17 : [CTRL] 18 : [ALT](PC98の[GRPH]) 20 : [CAPSLOCK] 27 : [ESC] 32 : スペースキー 33 : [PAGEUP](PC98の[ROLLDOWN]) 34 : [PAGEDOWN](PC98の[ROLLUP]) 35 : [END](PC98の[HELP]) 36 : [HOME](PC98の[HOMECLR]) 37 : カーソルキー[←] 38 : カーソルキー[↑] 39 : カーソルキー[→] 40 : カーソルキー[↓] --------------------------------------------- 48〜57 : [0]〜[9](メインキーボード) 65〜90 : [A]〜[Z] 96〜105 : [0]〜[9](テンキー) 112〜121 : ファンクションキー [F1]〜[F10] --------------------------------------------- ^p %href aplsel aplobj aplact aplfocus aplstr aplkeyd aplkeyu aplget apledit %index aplkeyd キー押し下げ送信 %group OSシステム制御命令 %prm p1,p2 p1=0〜(0) : キーコード p2=0〜(0) : 特殊キーコード ^p ( 1 = SHIFT / 2 = CTRL / 4 = ALT ) ^p %inst キーを押した情報を捕獲先のオブジェクトに送信します。 ^ p1でキーコードを指定します。これは、getkey命令で使用しているキーコード と同一のものです。 ^ p2で特殊キーの指定をします。1ならば、シフトキー、2ならばCTRLキー、 4な らばALTキーが同時に押されていることになります。 ^ aplkey命令とは違い、aplkeyd命令は、キーを押した情報だけを送信します。 キーを押しつづけたい場合や、当時に複数のキーを押した状態を作り出したい 時に使用してください。 また、 aplkeyd命令でキーを押した情報を送信した後は、必ずキーを離したと いう情報をaplkeyu命令で送信しなければなりません。aplkeyd命令は、キーの 情報をキューにためるだけです。 実際に押した結果を反映するためには、waitや await命令を直後に入れる必要 があります。 p1に0を指定した場合には、特殊キーコードの情報のみが送信されます。 %href aplsel aplobj aplact aplfocus aplstr aplkey aplkeyu aplget apledit %index aplkeyu キー押し上げ送信 %group OSシステム制御命令 %prm p1,p2 p1=0〜(0) : キーコード p2=0〜(0) : 特殊キーコード ^p ( 1 = SHIFT / 2 = CTRL / 4 = ALT ) ^p %inst キーを離した情報を捕獲先のオブジェクトに送信します。 ^ p1でキーコードを指定します。これは、getkey命令で使用しているキーコード と同一のものです。 ^ p2で特殊キーの指定をします。1ならば、シフトキー、2ならばCTRLキー、 4な らばALTキーが同時に押されていることになります。 ^ aplkeyu命令は、キーを離した情報だけを送信します。必ず、aplkeyd命令と対 にして使用してください。 p1の指定を省略すると、 aplkeyd命令で指定したキーコードと、特殊キーコー ドと同じものが使われます。 aplkeyu命令は、キーの情報をキューにためるだけです。 実際に押した結果を反映するためには、waitや await命令を直後に入れる必要 があります。 %href aplsel aplobj aplact aplfocus aplstr aplkey aplkeyd aplget apledit %index aplget オブジェクトの文字列を取得 %group OSシステム制御命令 %prm p1,p2 p1=変数 : オブジェクトの文字列を読み出す変数名 p2=0〜(64) : 最大文字数 %inst aplobj命令で選択されたオブジェクトに設定された文字列を取得します。 ^ オブジェクトが "BUTTON" などの場合はそこに設定されている文字列が、また ウィンドウの場合はタイトルに表示されている文字列を読み出します。 ^ p2が省略されている場合は最大64文字まで読み出します。 64文字以上の文字列を読み出す場合は、p2に最大文字数を指定してください。 (あらかじめ読み出す変数に十分なバッファが確保されている必要があります) ^ aplfocus命令で、ウィンドウの指定がデフォルトになっている場合は現在アク ティブなウィンドウのタイトル文字列が読み出されます。 aplget命令で "EDIT" オブジェクトの編集内容を呼び出すことはできません。 "EDIT"オブジェクトの編集内容以外の情報は、 apledit命令で取得することが 可能です。 %href aplsel aplobj aplact aplfocus aplstr aplkey aplkeyd aplkeyu apledit %index apledit エディットコントロール情報取得 %group OSシステム制御命令 %prm p1,p2,p3 p1=変数 : 情報が格納される数値型変数名 p2=0〜2 : 取得情報No. p3=0〜 : 行インデックス指定 %inst aplobj命令で選択された"EDIT"タイプのオブジェクトの情報を取得します。 ^ p1に読み出す先の変数名を指定して、p2で情報の種類を指定します。 ^ p2=0 : 現在のカーソル位置(1byte単位) p2=1 : 全体の行数 p2=2 : p3で指定した行にある文字数 ^ パラメータp3は、p2に2が指定された時のみ意味を持ちます。 また、p2が0の時 (カーソル位置取得)はp1で指定した変数に、先頭からカーソ ルまでのバイト数、もし選択範囲があれば、システム変数statにカーソル位置 から選択されている範囲のバイト数が代入されます。 %href aplsel aplobj aplact aplfocus aplstr aplkey aplkeyd aplkeyu aplget %index clipset クリップボードテキスト転送 %group OSシステム制御命令 %prm "strings" "strings" : クリップボードに送る文字列 %inst "strings"で指定した文字列を、クリップボードに送ります。 ^ クリップボードに送られたテキストデータは、他のアプリケーションで貼り付 け(ペースト)が可能になります。 %index clipsetg クリップボード画像転送 %group OSシステム制御命令 %inst 現在選択されている画面をビットマップデータとして、クリップボードに送り ます。 ^ クリップボードに送られた画像データは、 他のアプリケーションで 貼り付け (ペースト)が可能になります。 %index clipget クリップボードテキスト取得 %group OSシステム制御命令 %prm p1,p2 p1=変数 : 情報が格納される変数名 p2=0〜(64) : 最大文字数 %inst クリップボードに送られているテキストの内容を読み出し、p1で指定した文字 列型変数に代入します。 読み出す内容は他のアプリケーションなどでコピーされたテキストのみです。 画像や音声は取り出すことができません。p2が省略されている場合は最大64文 字まで読み出します。64文字以上の文字列を読み出す場合は、p2に最大文字数 を指定してください。 (あらかじめ読み出す変数に十分なバッファが確保されている必要があります) %index comopen シリアルポートを初期化 %group 通信制御命令 %prm p1,"protocol" p1=0〜(0) : COMポート番号 "protocol" : プロトコル指定文字列 %inst シリアルポートを初期化して送受信を可能な状態にします。 ^ シリアル通信命令セットを使う場合には、最初に comopen命令でポートの初期 化をする必要があります。 p1で、COMポートの番号を指定します。 1ならばCOM1、2ならばCOM2…が対応し ます。 p1が0の場合は、シリアルではなくプリンタ(パラレル)ポートが指定さ れます。 "protocol"で、プロトコル指定文字列を記述することができます。 プロトコル指定文字列は以下のような記述をする必要があります。 ^ "baud=1200 parity=N data=8 stop=1" ^ 上の例では、ボーレートが1200bps、パリティビットなし、データビット8、ス トップビット1という指定になります。 "protocol"に何も書かなかった場合(""を指定)は、現在のデフォルト値が使用 されます。通常は、何も指定しなくても問題ありません。 ^ シリアル通信命令では、同時に1つのポートまでしか制御できません。 複数のシリアルポートを同時に監視するソフトを構築することはできませんの でご注意ください。 ^ シリアルポートは、一度初期化されると、開放するまで他のアプリケーション が使用できなくなってしまうので、必ず最後にポートを開放することを忘れな いでください。特に通信中にクローズボックスを押して終了してしまうことの ないようにonexit命令などで、終了時に注意を促すようなスクリプトを作成し てください。 ^ シリアルポートの初期化に成功すると、システム変数 statの値が0になります 。もし、初期化に失敗した場合はシステム変数statの値は1になります。 %href comclose %index comclose シリアルポートを解放 %group 通信制御命令 %inst シリアルポートとの通信を終了します。 ^ comopen命令で初期化されたシリアルポートは、必ず comclose命令で最後に解 放する必要があります。 comclose命令でポートが解放されないままプログラムが終了すると、他のプロ グラムがポートに二度とアクセスできなくなってしまうので注意してください 。 %href comopen %index comput シリアルポートに送信 %group 通信制御命令 %prm "send-string" "send-string" : 送出文字列 %inst "send-string"で指定された文字列をシリアルポートに送出します。 ^ 命令の実行後、システム変数statに結果が返されます。 システム変数 statが0ならば通信に失敗し送信されていないことを示します。 1以上の場合は、送信に成功したバイト数(文字数)が代入されています。 %href comopen comclose computc %index computc シリアルポートに送信 %group 通信制御命令 %prm p1 p1=0〜255(0) : 送信データ(1バイト) %inst p1で指定された1バイトの数値データをシリアルポートに送出します。 ^ 命令の実行後、システム変数statに結果が返されます。 システム変数 statが0ならば通信に失敗し送信されていないことを示します。 %href comopen comclose comput %index comgetc シリアルポートから受信 %group 通信制御命令 %prm p1 p1=数値型変数 : 受信データが代入される変数名 %inst シリアルポートから1バイト受信し、p1で指定した変数に代入します。 ^ 命令の実行後、システム変数statに結果が返されます。 システム変数 statが0ならば、受信バッファが空になっていることを示してい ます。 %href comopen comclose comget %index comget シリアルポートから文字列を受信 %group 通信制御命令 %prm p1,p2 p1=文字列型変数 : 受信データが代入される変数名 p2=1〜(64) : 受信文字数指定 %inst シリアルポートから文字列を受信し、p1で指定した変数に代入します。 ^ p2で、受信する文字数を指定することができます。命令の実行後、システム変 数statに結果が返されます。 システム変数 statが0ならば、受信バッファが空になっていることを示してい ます。受信に成功すると、p1に文字列が代入され、システム変数statに実際に 受信した文字数が代入されます。 %href comopen comclose comgetc %index gfini 対象画面を設定 %group 拡張画面制御命令 %prm p1,p2 p1=0〜(0) : 画面操作を行なうXサイズ(dot単位) p2=0〜(0) : 画面操作を行なうYサイズ(dot単位) %inst フルカラー画面操作命令を行なう対象の画面を設定します。 ^ 必ず gfini命令で対象の画面を設定してから、他のフルカラー画面操作命令を 使用してください。 gfini命令では、現在 gsel命令で選択されているウィンドウのカレントポジシ ョンから、p1,p2で指定したサイズを描画対象とします。 必ずフルカラーモードで初期設定をした画面に対して行なってください。 %index gfcopy 半透明コピー %group 拡張画面制御命令 %prm p1 p1=0〜100(0) : 半透明コピーレート(%) %inst p1で指定したレートで画面イメージをコピーします。 ^ コピー先は、gfini命令で設定した画面になります。 コピー元は、gfcopy命令が実行された時点に、描画先に設定されている画面の カレントポジションになります。 p1のレートは 0〜100(%)で、100%は普通のコピーになります。この命令を実行 しただけでは実際の画面は更新されません。 「redraw 1」などで画面の更新を行なって初めて反映されます。 %href gfini %index gfdec 画面の色減算 %group 拡張画面制御命令 %prm p1,p2,p3 p1,p2,p3=0〜255(0) : 色コード(R,G,Bの輝度) %inst gfini命令で設定した画面内のすべてのドットに対して、p1,p2,p3 で指定した 数値を減算します。 ^ p1はR、p2はG、p3は Bに対して行なわれます。これはフルカラーモードにおい て、ゆっくりと色を落としていく (フェードアウト) の効果を出す時に有効で す。この命令を実行しただけでは実際の画面は更新されません。 「redraw 1」などで画面の更新を行なって初めて反映されます。 %href gfini %index gfinc 画面の色加算 %group 拡張画面制御命令 %prm p1,p2,p3 p1,p2,p3=0〜255(0) : 色コード(R,G,Bの輝度) %inst gfini命令で設定した画面内のすべてのドットに対して、p1,p2,p3 で指定した 数値を加算します。 ^ p1はR、p2はG、p3は Bに対して行なわれます。これはフルカラーモードにおい て、ゆっくりと色を白にしていく (ホワイトアウト) の効果を出す時に有効で す。この命令を実行しただけでは実際の画面は更新されません。 「redraw 1」などで画面の更新を行なって初めて反映されます。 %href gfini %index fxcopy ファイルのコピー・移動 %group 拡張ファイル操作命令 %prm p1,"dest",p2 p1=変数 : コピー元のファイル名が格納された文字列型変数名 "dest" : コピー先のパス名 p2=0,1 (0) : モード指定( 0=コピー / 1=移動 ) %inst 指定したファイルを、別のパスにコピーまたは移動をします。 ^ p1で、コピー元のファイル名をあらかじめ格納してある変数名を指定します。 "dest"で、コピー先のディレクトリやドライブを指定します。 p2のモードにより、コピーか移動のどちらかを指定することができます。 p2の指定を省略した場合は、コピーになります。 移動のモードを指定した場合は、元のファイルは削除されます。ただし、移動 は同一ドライブ内でなければなりません。 ^ fxcopy命令は、Windowsのシェルを使って高速にコピー・移動を行ないます。 HSPのbcopy命令よりも高速ですが、 packfile で指定したファイルへのアクセ スはできませんので注意してください。 命令の実行に失敗すると、システム変数 statに1が代入されます。正常に終了 した場合は、システム変数 statは0になります。 %sample a="test.bin" fxcopy a,"c:\\temp" ; "test.bin"をC:\tempにコピー %index fxren ファイル名を変更 %group 拡張ファイル操作命令 %prm p1,"new name" p1=変数 : オリジナルのファイル名が格納された文字列型変数名 "new name" : 新規ファイル名 %inst 指定したファイルを、"new name"で指定したファイル名に変更します。 ^ p1で、元のファイル名をあらかじめ格納してある変数名を指定します。 "new name"で、新しいファイル名を指定します。 命令の実行に失敗すると、システム変数 statに1が代入されます。正常に終了 した場合は、システム変数 statは0になります。 %index fxinfo ドライブ情報を取得 %group 拡張ファイル操作命令 %prm p1,p2,p3 p1=変数 : 情報が格納される変数名 p2=0〜(0) : ドライブ指定 p3=0〜(0) : 情報タイプ指定 %inst p2で指定したドライブについての情報をp1で指定した変数に代入します。 ^ p2で指定するドライブは、0だとカレントドライブ、1ならばAドライブ、2なら ばBドライブ…というように1から26までが、A〜Zドライブに対応しています。 p3で、情報タイプを指定することで様々なドライブ情報を取得することができ ます。p3で指定できる数値は以下の通りです。 ^p p3 : 変数型 : 情報の内容 --------------------------------------------------------- 0 : 数値型 : ドライブの残り容量(byte) 1 : 数値型 : 1クラスタあたりのセクタ数 2 : 数値型 : 1セクタあたりのバイト数 3 : 数値型 : 空きクラスタ数 4 : 数値型 : トータルのクラスタ数 8 : 数値型 : ドライブのタイプ 16 : 文字列型 : ボリュームラベル名 17 : 文字列型 : ファイルシステム名 18 : 数値型 : ボリュームシリアル番号 19 : 数値型 : 使用可能な最大ファイル文字数 20 : 数値型 : ファイルシステムフラグ 32 : 文字列型 : ドライブの残り容量(byte) (大容量対応) ^p 指定するタイプにより、p1の変数に代入される型が違います。 タイプ16,17は あらかじめ文字列型の変数を指定しなければなりません。 タイプ8で取得できるドライブのタイプ値の詳細は以下の通りです。 ^p タイプ : 内容 -------------------------------- 0 : 不明なドライブ 1 : ドライブなし 2 : リムーバブルディスク 3 : ハードディスク 4 : リモート(ネットワーク)ドライブ 5 : CD-ROMドライブ 6 : RAMディスク ^p 命令の実行に失敗すると、システム変数 statに1が代入されます。正常に終了 した場合は、システム変数statは0になります。 ^ p3に0を指定して得られるドライブの残り容量は 2Gbyteまでの値となります。 2Gを超える値の場合はp3に32を指定して文字列としてサイズを得る方法をご使 用下さい。 %index fxaget ファイル属性を取得 %group 拡張ファイル操作命令 %prm p1,"file" p1=変数名 : 情報が格納される数値型変数名 "file" : ファイル名指定 %inst "file"で指定したファイルの属性を読み出しp1で指定した変数に代入します。 ^ 読み出した属性は以下のような数値が含まれています。 ^p 属性 : 内容 -------------------------------- $1 : 書き込み禁止 $2 : 隠しファイル $4 : システム $10 : ディレクトリ $20 : アーカイブ $80 : 標準タイプ $100 : 一時ファイル $800 : 圧縮ファイル $1000 : オフライン ^p 同時に複数の属性が設定されている場合は、それぞれの値を足した値になりま す。命令の実行に失敗すると、システム変数 statに1が代入されます。正常に 終了した場合は、システム変数 statは0になります。 %index fxaset ファイル属性を設定 %group 拡張ファイル操作命令 %prm "file",p1 "file" : ファイル名指定 p1=0〜(0) : 設定する属性 %inst "file"で指定したファイルに、p1で指定した属性を設定します。 ^ p1で指定する属性値は以下のような数値が使用できます。 ^p 属性 : 内容 -------------------------------- $1 : 書き込み禁止 $2 : 隠しファイル $4 : システム $10 : ディレクトリ $20 : アーカイブ $80 : 標準タイプ $100 : 一時ファイル $800 : 圧縮ファイル $1000 : オフライン ^p 同時に複数のファイル属性を設定する場合は、 それぞれの値を足した値にし てください。 命令の実行に失敗すると、システム変数statに1が代入されます。正常に終了 した場合は、システム変数 statは0になります。 %index fxtget タイムスタンプを取得 %group 拡張ファイル操作命令 %prm p1,"file" p1=変数名 : 情報が格納される数値型の配列変数名 "file" : ファイル名指定 %inst "file"で指定したファイルのタイムスタンプ情報を取得して、p1で指定した変 数に代入します。 ^ ただし、p1の変数は配列変数、数値型で24以上の要素を入れるだけのメモリ確 保をしておかなければなりません。 このためfxtgetおよび、fxtset命令で指定する変数はあらかじめ dim命令で、 「dim a,24」などの配列宣言をしてから使用してください。取得されたタイム スタンプの情報は配列変数の各要素に代入されます。 たとえば、「fxtget a,"test"」と指定した場合は、変数a.0〜a.23に情報が代 入されます。配列の各要素に代入される値の詳細は以下の通りです。 ^p 要素 : 内 容 ---------------------------------------- 0 : 作成日の年(西暦) 1 : 作成日の月 2 : 作成日の曜日(日曜=0) 3 : 作成日の日 4 : 作成日の時 5 : 作成日の分 6 : 作成日の秒 7 : 作成日のミリ秒 ---------------------------------------- 8 : 更新日の年(西暦) 9 : 更新日の月 10 : 更新日の曜日(日曜=0) 11 : 更新日の日 12 : 更新日の時 13 : 更新日の分 14 : 更新日の秒 15 : 更新日のミリ秒 ---------------------------------------- 16 : 最終アクセス日の年(西暦) 17 : 最終アクセス日の月 18 : 最終アクセス日の曜日(日曜=0) 19 : 最終アクセス日の日 20 : 最終アクセス日の時 21 : 最終アクセス日の分 22 : 最終アクセス日の秒 23 : 最終アクセス日のミリ秒 ---------------------------------------- ^p 命令の実行に失敗すると、システム変数statに1が代入されます。 正常に終了した場合は、システム変数statは0になります。 %index fxtset タイムスタンプを設定 %group 拡張ファイル操作命令 %prm p1,"file" p1=変数名 : 設定する情報が格納されている数値型の配列変数名 "file" : ファイル名指定 %inst "file"で指定したファイルのタイムスタンプ情報を、p1で指定した変数のもの に変更します。 ^ ただし、p1の変数は配列変数、数値型で24以上の要素を入れるだけのメモリ確 保をしておかなければなりません。p1で指定する配列変数は、fxtget命令で使 用するものと同一形式です。配列変数に指定する値の詳細は、fxtget命令の説 明を参照してください。 命令の実行に失敗すると、システム変数 statに1が代入されます。正常に終了 した場合は、システム変数 statは0になります。 ^ fxtset命令で設定するタイムスタンプは、OSのファイルシステムによっては完 全に設定されないことがあります。これは、ファイルシステムが完全な形で時 間を保存していないためです。たとえば、Windows95(FAT)の場合は、最終アク セス日の時刻は記録されません。日付のみになります。また秒単位のデータも 粗く記録されます。 %href fxtget %index selfolder フォルダ選択ダイアログ %group 拡張ファイル操作命令 %prm p1,"message" p1=変数名 : 選択されたパス名が格納される文字列型の変数名 "message" : ダイアログに表示される文字列 %inst Windowsのシステムで使用されている、 フォルダ選択ダイアログを表示してフ ォルダ名を取得します。 ^ 選択が正常に終了すると、システム変数 statには0が代入されます。選択時に エラーまたは、キャンセルされた場合には、システム変数 statの値は1になり ます。正常に選択された場合には、フォルダまでのフルパス名がp1で指定した 変数に代入されます。 また、フォルダ名がシステム変数 refstrに代入されま す。"message" の部分に、ダイアログ表示の時に上に表示される文字列を指定 することができます。 指定を「""」にすると、「フォルダを選択してください」という標準的なメッ セージが表示されます。 %index fxshort DOSファイルネームを取得 %group 拡張ファイル操作命令 %prm p1,"file" p1=変数名 : 情報が格納される文字列型変数名 "file" : ファイル名指定 %inst "file" で指定したファイルをDOSファイルネームに変換して、p1で指定した変 数に代入します。 ^ "file" に指定するファイル名は、Windowsで使われているロングファイルネー ムでなければなりません。 DOS プロンプトのアプリケーションなどに、渡すためのファイル名を取得する 場合などに使用できます。 ^ 尚、 DOSファイルネームをロングファイルネームに変換するには、標準命令の dirlist命令を使うことができます。 %index fxdir 特殊なディレクトリ名を取得 %group 拡張ファイル操作命令 %prm p1,p2 p1=変数名 : 情報が格納される文字列型変数名 p2=0〜(0) : 取得するディレクトリ情報の種類 %inst p2で指定した種類のディレクトリ名を、p1で指定した変数に代入します。 この命令で、 Windowsのシステムで使用される色々なディレクトリ名を取得す ることができます。 ^ p2で指定できる数値は以下の通りです。 ^p p2 : 取得される内容 ------------------------------------------------------------ -2 : Windowsのテンポラリ(一時)フォルダ -1 : Windowsのシステム(System)フォルダ 2 : スタートメニュー「プログラム」グループのフォルダ 5 :「マイドキュメント」のフォルダ 6 :「お気に入り」のあるフォルダ 7 :「スタートアップ」フォルダ 8 :「最近使った書類」フォルダ 9 :「送る」(SendTo)のフォルダ 11 : スタートメニューのフォルダ 16 : デスクトップのフォルダ 21 : テンプレート(Template)フォルダ 26 : ApplicationDataフォルダ 27 : プリンタデバイスフォルダ 32 : Internet キャッシュフォルダ 33 : Internet Cookiesフォルダ 34 : Internet 履歴フォルダ ^p 指定に誤りがあったり、エラーが発生するとシステム変数 statに1が代入され ます。正常に終了するとシステム変数 statは0になります。 %index fxlink ショートカットを作成 %group 拡張ファイル操作命令 %prm p1,"path" p1=変数名 : ショートカット名が格納されている文字列型変数名 "path" : 元になるファイルのフルパス名 %inst p2で指定したファイルへのショートカットを、p1で指定された名前でカレント ディレクトリに作成します。 ^ p1に指定するのは、ショートカット名が格納された文字列型の変数でなければ なりません。また、ショートカット名には拡張子やドライブ、ディレクトリ名 を含まない形で指定してください。 (エクスプローラーでは表示されませんが、自動的に拡張子が.lnkになります) p2には、ショートカット先の場所をフルパスで指定してください。 また、p2に「http://www.at-m.or.jp/~onitama/」などのURLを指定すると、 インターネット・ショートカットが作成されます。 ^ 指定に誤りがあったり、エラーが発生するとシステム変数 statに1が代入され ます。正常に終了するとシステム変数 statは0になります。 %index lzdist 圧縮解凍先ディレクトリ指定 %group 拡張ファイル操作命令 %prm "path" "path" : lzcopy命令の解凍コピー先ディレクトリ %inst lzcopy命令の解凍コピー先ディレクトリを指定します。 ^ lzcopy命令を実行する場合は、必ずlzdist命令でコピー先をあらかじめ指定し ておく必要かあります。 %index lzcopy 圧縮解凍コピー %group 拡張ファイル操作命令 %prm "name" "name" : 圧縮ファイル名 %inst Microsoftの compress.exe形式の圧縮ファイルを解凍しながらコピーを行ない ます。 ^ カレントディレクトリにある"name"で指定された圧縮ファイルを、lzdist命令 で指定したディレクトリに解凍された形でコピーします。 "name"には、拡張子を含まない名前(8文字まで)を指定してください。 lzcopy命令を実行する場合は、必ずlzdist命令でコピー先をあらかじめ指定し ておく必要かあります。 ^ 指定に誤りがあったり、エラーが発生するとシステム変数 statに1が代入され ます。正常に終了するとシステム変数 statは0になります。 %index emath 固定小数の精度を指定 %group 拡張入出力制御命令 %prm p1 p1=2〜30(8) : 固定小数のビット精度 %inst 簡易数学関数命令セット全体で使われる固定小数の精度を設定します。 ^ p1で精度のビット数を指定します。たとえば、16を指定すると 「整数16bit + 小数16bit」のフォーマットになります。 固定小数のビット精度が高いほど、誤差のない正確な小数点演算が可能になり ますが、そのぶん整数部で扱える範囲がせまくなります。 デフォルトでは8bitに設定されています。 %index emstr 固定小数を文字列に変換 %group 拡張入出力制御命令 %prm p1,p2,p3 p1=変数名 : 文字列が格納される文字列型変数名 p2=0〜 : 固定小数の値 p3=1〜(10) : 変換される文字列の桁数 %inst 固定小数の値を、小数点を含む文字列に変換します。 ^ p1で指定した文字列型変数に、変換後の文字列が代入されます。 p2に、変換の対象になる固定小数の値(が代入されている変数)を指定します。 p3で、変換される桁数を指定することができます。 p3の指定を省略した場合は、10桁になります。 %index emcnv 文字列を固定小数に変換 %group 拡張入出力制御命令 %prm p1,"val" p1=変数名 : 固定小数が格納される数値型変数名 "val" : 固定小数を示す文字列 %inst "val" で指定した文字列を固定小数の値に変換して、p1の変数に代入します。 ^ たとえば、"3.1415"という文字列を指定すると、それを固定小数に変換して格 納します。 %index emint 固定小数を整数に変換 %group 拡張入出力制御命令 %prm p1,p2 p1=変数名 : 整数値が格納される数値型変数名 p2=0〜 : 固定小数の値 %inst "固定小数の値を、通常の32bit整数に変換し、p1で指定した数値型変数に代入 します。 ^ 整数に変換する際には、小数部分はすべて切り捨てられます。 %index emsin サインを求める %group 拡張入出力制御命令 %prm p1,p2 p1=変数名 : 結果が格納される数値列型変数名 p2=0〜 : 角度(固定小数) %inst p2で指定した角度のサイン値を求めて、p1で指定された変数に代入します。 ^ p2の角度には、固定小数の値を指定します。 単位は、0から始まって1.0で1回転する数値になっています。 p2の値を32bit整数値として見ると、0から始まり、64で90度、128で180度、 192で270度、256で360度となります(固定小数の精度が8bitの場合)。 %index emcos コサインを求める %group 拡張入出力制御命令 %prm p1,p2 p1=変数名 : 結果が格納される数値列型変数名 p2=0〜 : 角度(固定小数) %inst p2で指定した角度のコサイン値を求めて、p1で指定された変数に代入します。 ^ p2の角度には、固定小数の値を指定します。 単位は、0から始まって1.0で1回転する数値になっています。 p2の値を32bit整数値として見ると、0から始まり、64で90度、128で180度、 192で270度、256で360度となります(固定小数の精度が8bitの場合)。 %index emsqr 平方根を求める %group 拡張入出力制御命令 %prm p1,p2 p1=変数名 : 結果が格納される数値列型変数名 p2=0〜 : 固定小数 %inst p2で指定した固定小数の平方根(ルート)を求めて、p1で指定された変数に代入 します。 ^ p2にマイナスの値や0を指定した場合は、0が返されます。 %index ematan アークタンジェントを求める %group 拡張入出力制御命令 %prm p1,p2,p3 p1=変数名 : 結果が格納される数値列型変数名 p2=0〜 : X値 p3=0〜 : Y値 %inst Y/Xのアークタンジェントを求めて、p1で指定された変数に代入します。 ^ これは、2点間の角度を求める場合に主に使用します。 (X1,Y1) という座標と、(X2,Y2) の座標の角度を求める場合は、座標の差分、 X値は(X2-X1)、Y値は(Y2-Y1)を指定します。 p1に代入される角度の値は、emsinやemcos命令で使われる角度の単位(0から始 まって、1.0で一回転)と同じです。 %index regkey レジストリキー指定 %group OSシステム制御命令 %prm p1,"key-name",p2 p1=0〜(0) : キーグループ指定 "key-name" : キー名指定 p2=0〜1(0) : 既存のキー(0)・新規作成(1) モードスイッチ %inst アクセスするレジストリのキーを指定します。レジストリの読み書きをする場 合には、最初に必ずregkey命令でキーと読み書きのモードを指定しておかなけ ればなりません。 ^ p1では、キーグループを指定します。これは以下の中から選びます。 ^p p1 : key group ----------------------------------------------------- 0 : HKEY_CURRENT_USER 1 : HKEY_LOCAL_MACHINE 2 : HKEY_USERS 3 : HKEY_CLASSES_ROOT 4 : HKEY_DYN_DATA ( Windows95/98のみ ) 5 : HKEY_PERFORMANCE_DATA ( WindowsNTのみ ) ^p "key-name"では、"Software\\OnionSoftware\\hsed" のように「\\」でツリー を区切って階層指定を行ないます。 最後に、p2で読み書きモードの設定をします。 p2が0の場合は読み出しモード となり、getreg命令で指定したセクションの内容を読み出すことができるよう になります。p2が1の場合は、新規作成モードとなり、 setreg命令で指定した セクションを追加します。 すでに存在するレジストリの読み出し、変更はp2を0に設定してください。 ^ regkey命令の実行後は、システム変数statに結果が返ります。 システム変数 statが0以外の場合は、何らかのエラーが起こっていることを示 しています。 %index getreg レジストリ読み出し %group OSシステム制御命令 %prm p1,"section",p2,p3 p1=変数名 : 読み出すための変数名 "section" : セクション名指定 p2=0〜1(0) : タイプ指定 p3=1〜(64) : 読み出しサイズ指定 %inst 指定されたセクションの内容をp1で指定した変数に読み出します。 ^ あらかじめregkey命令でアクセスするレジストリの位置を指定してから使う必 要があります。対象となるレジストリ位置が指定されていない時は、エラーが 表示されます。 p2でタイプを指定します、タイプのコードは以下の通りです。 ^p p2 : type code -------------------------- 0 : 数値(32bit) 1 : 文字列 2 : バイナリデータ ^p p3で読み出しサイズを指定します。これは、文字列かバイナリのタイプを選ん だ場合に有効になります。 ^ 命令の実行後は、システム変数 statに結果が返ります。 システム変数 statが0以外の場合は、何らかのエラーが起こっていることを示 しています。 %href regkey %index setreg レジストリ書き込み %group OSシステム制御命令 %prm p1,"section",p2,p3 p1=変数名 : 書き込むための変数名 "section" : セクション名指定 p2=0〜1(0) : タイプ指定 p3=1〜(64) : 書き込みサイズ指定 %inst p1で指定された変数の内容を、指定されたセクションに書き込みます。 ^ あらかじめregkey命令でアクセスするレジストリの位置を指定してから使う必 要があります。対象となるレジストリ位置が指定されていない時は、エラーが 表示されます。 p2でタイプを指定します、タイプのコードは以下の通りです。 ^p p2 : type code --------------------------- 0 : 数値(32bit) 1 : 文字列 2 : バイナリデータ ^p p3で書き込みサイズを指定します。これは、バイナリのタイプを選んだ時にの み有効になります。 ^ レジストリ操作命令では、すべての情報にアクセスが可能ですが、間違ったシ ステム情報を書き込むと、最悪システムが動作しなくなるなどの深刻な事態を 引き起こすので、レジストリの操作は慎重に行なうようにしてください。 ^ 命令の実行後は、システム変数 statに結果が返ります。 システム変数 statが0以外の場合は、何らかのエラーが起こっていることを示 しています。 %href regkey %index regkill レジストリキー削除 %group OSシステム制御命令 %prm p1,"key-name" p1=0〜(0) : キーグループ指定 "key-name" : キー名指定 %inst 指定したレジストリのキーを削除します。 ^ p1では、キーグループを指定します。これは以下の中から選びます。 ^p p1 : key group --------------------------------------------------- 0 : HKEY_CURRENT_USER 1 : HKEY_LOCAL_MACHINE 2 : HKEY_USERS 3 : HKEY_CLASSES_ROOT 4 : HKEY_DYN_DATA ( Windows95/98のみ ) 5 : HKEY_PERFORMANCE_DATA ( WindowsNTのみ ) ^p "key-name" では、"Software\\OnionSoftware\\hsed"のように「\\」でツリー を区切って階層指定を行ないます。 ^ 命令の実行後は、システム変数statに結果が返ります。 システム変数 statが0以外の場合は、何らかのエラーが起こっていることを示 しています。 ^ 指定したレジストリのキーの下に、さらにキーが含まれている場合には注意が 必要です。 OSがWindowsNTの場合は、レジストリキーの下にさらにキーが含ま れている場合にはエラーとなり削除できません。 Windows95(98)/NTどちらでも動作するようなスクリプトを作る際には、この点 に気をつけてください。 %index reglist レジストリ一覧取得 %group OSシステム制御命令 %prm p1,p2 p1=変数名 : 読み出すための変数名 p2=0〜1(0) : モード指定 %inst 指定された位置にあるレジストリキーの一覧を取得します。 ^ あらかじめregkey命令でアクセスするレジストリの位置を指定しておく必要が あります。 p2のモードが、0の時は「セクション一覧」を取得し、モード1の場合は、「キ ー一覧」を取得することになります。 たとえば、"Software\\OnionSoftware\\hsed"と、 "Software\\OnionSoftware\\hspcomm" という2つのレジストリキーが存在した とすると、"Software\\OnionSoftware"の位置から下にあるキー一覧は、 「hsed」と「hspcomm」になります。 これにより、レジストリツリーの中にどのようなキーやセクションが存在して いるかを調べることができます。 取得された情報は、p1で指定した文字列型の変数に代入されます。 それぞれの項目は改行(\n)で区切られた形で取得されるので、あらかじめ十分 な変数のバッファを取っておいた方が安全です。 取得した文字列は、 メモリノートパッド命令やlistbox命令、combox命令でそ のまま使用することができます。 %href regkey %index sysexit システムに終了を通知 %group OSシステム制御命令 %prm p1 p1=0〜(0) : 終了タイプ指定 %inst 動作中のWindowsシステムを終了させます。 ^ p1で指定されたタイプに従って、 Windowsが終了します。この命令が実行され ると、すべてのアプリケーションが終了処理を行ないます。作成中のスクリプ トのセーブなど、十分注意して使用してください。 また、sysexit命令の後は、 end命令を入れてHSPのスクリプトも終了させてく ださい。 p1で指定するタイプ指定は以下の通りです。 ^p タイプ : 内容 ---------------------------------- 0 : ログオフする 1 : 再起動をする 2 : シャットダウンをする 3 : 電源を切る ^p 電源を切る場合は、「シャットダウン」→「電源を切る」の 2つを連続でリク エストするようにしてください。 ^ WindowsNTや2000 などリソース権限があるOSでは、管理者権限でログオンして いないと、この命令を実行することはできません。 %index pipeexec パイプ付き実行 %group 拡張入出力制御命令 %prm p1,"filename",p2 p1=変数 : 標準出力が格納される文字列型変数名 "filename" : 実行されるファイル名 p2=0〜1(0) : ウィンドウ表示スイッチ %inst "filename"で指定したファイルを実行します。 実行ファイルは、パイプを通じて標準入力、標準出力の設定取得が可能になり ます。 pipeexec命令は、おもにwin32コンソールアプリケーション(DOSプロン プトで動作する32bitアプリケーション)の実行を支援するための機能です。 加えて、 16bitアプリケーションおよび、バッチファイルは指定できないので 注意してください。 "filename"で実行ファイルを指定します。フルパス指定でない場合は、標準の 検索パスが使用されます。 コマンドラインオプションを指定する場合は、ファイル名に続いて DOSプロン プトの要領で指定してください。 (例:「notepad.exe readme.txt」) p1で指定した変数バッファに、実行時の標準出力が格納されます。 あらかじめ「sdim buf,32000」などで大きいバッファを確保したものを指定す るようにしてください。 p2でウィンドウの表示ON/OFFを指定します。デフォルトでは、0 (表示しない) になります。pipeexec命令実行後は、必ず pipegetでプロセス終了までを監視 してください。 %href pipeget pipeput %index pipeget パイプ付き実行監視 %group 拡張入出力制御命令 %prm p1 p1=変数 : 結果が格納される文字列型変数名 %inst pipeexec命令で実行されたプロセスを監視します。 p1に、パイプの情報を取得するバッファとなる文字列型変数を指定する必要が あります。 pipeexecによるファイル実行の状況は、システム変数statに返されます。 ^p stat値 | 内 容 | 変数p1の内容 --------------------------------------------------------- 0 | 実行終了 | 変化なし 1 | 実行準備中 | 変化なし 2 | StdOutputを取得中 | StdOutput 3 | StdErrorを取得中 | StdError 4 | 終了処理中 | 変化なし ^p 通常は、pipeexec命令の実行後はpipeget命令でstat値が0になる(実行終了)まで wait/await命令を入れながら監視を続けて下さい。 ^ 1回の実行で取得されるサイズは、p1で指定される文字列型の変数が確保して いるバッファサイズまでになりますので、バッファが溢れることはありません 。通常4096文字程度のバッファを割り当てるようにしていれば問題はないでし ょう ( 例:「sdim buf,4096」)。 %href pipeput %sample sdim ln,4096 sdim buf,32000 pipeexec buf,"notepad.exe",1 if stat : dialog "実行できませんでした" : end mes "実行中..." repeat pipeget ln ; パイプの取得/更新 if stat=0 : break ; 実行終了ならループを抜ける wait 10 loop mes "実行完了..." mes buf stop %index pipeput パイプに1byte送る %group 拡張入出力制御命令 %prm p1 p1=0〜255(0) : 送信コード %inst pipeexec命令で実行中のプロセスに対して、p1で指定したコードを標準入力と して送ります。 %href pipeget %index dirlist2 拡張ディレクトリ取得 %group 拡張ファイル操作命令 %prm p1,"filemask",p2,p3 p1=変数名 : ディレクトリ情報全体のサイズ "filemask" : 一覧のためのファイルマスク p2=0〜(0) : 取得モード p3=0〜(0) : ディレクトリ区切り記号 %inst ディレクトリの情報を取得します。 標準命令のdirlistよりもさらに詳しく検索することができます。 dirlist2命令は、3つのステップで処理が完了します。 ^p 1.dirlist2h命令で取得するものを選択 ↓ 2.dirlist2命令で取得を開始 ↓ 3.dirlist2r命令で結果を取得 ^p dirlist2命令は、決められたモードでディレクトリ情報の取得を行ないます。 結果は、dirlist2r命令で取得することができます。 dirlist2命令が正常に終了した場合には、システム変数statに情報を取得した ファイルの合計数が代入されます。取得モードの詳細は以下の通りです。 ^ "filemask"は、dirlist命令と同様に「*.*」のようなワイルドカード指定によ る検索ファイル名となります。 ^ p3で、取得時のディレクトリ区切り記号を指定することが可能です。 0か、省略をした場合は「\」が使用されます。 ^ モードの値は、合計して組み合わせることが可能です。 モード1 (bit0) を指定した場合には、 カレントディレクトリ以下全てのディ レクトリを再帰検索してファイル情報を取得します。 ^p モード : 取得される内容 --------------------------------------------------------------- 0 : カレントディレクトリのファイル一覧 1 : カレントディレクトリ以下のすべてのファイル一覧 2 : 隠しファイル、システム属性ファイルを一覧に含める ^p %href dirlist2h dirlist2r %index dirlist2h 拡張ディレクトリ取得設定 %group 拡張ファイル操作命令 %prm p1,p2 p1=0〜(0) : 一覧リストフラグ p2=0〜(0) : リスト区切り記号 %inst dirlist2命令によるディレクトリの情報取得の詳細を設定します。 実際の情報取得の方法については、dirlist2命令の説明を参照してください。 ^ p1の一覧リストフラグにより指定された項目が、区切り記号により分けられテ キスト情報として取得できるようになります。 一覧リストフラグは、以下の通りです。 ^p フラグ : 取得される内容 ----------------------------------------------------------------- 1 : フルパスによるファイル名 2 : パス名を除いたファイル名 4 : ファイルのサイズ 8 : ファイルの更新日付 16 : ファイルの更新時間 128 : パス名のみ ^p フラグ値は、加算して組み合わせることができます。 p1が0か省略された場合は、すべてのフラグを指定したことになります。 p2でリストを区切る記号を指定することができます。 p2が0か省略された場合は、「,」が指定されます。 %href dirlist2 dirlist2r %index dirlist2r 拡張ディレクトリ取得2 %group 拡張ファイル操作命令 %prm p1 p1=変数名 : ディレクトリ情報を取得する変数 %inst dirlist2命令により取得された情報を変数に代入します。 必ずdirlist2命令で返されたサイズ以上のメモリが確保されている変数に対し て実行する必要があります。 実際の情報取得の方法については、dirlist2命令の説明を参照してください。 %href dirlist2 dirlist2h