------------------------------------------------------------------------------ HSPINET ver1.1 REFERENCE MANUAL HSP : Hot Soup Processor HSP拡張拡張DLLリファレンス copyright 2005 (c) onion software ------------------------------------------------------------------------------ ・はじめに このDLLは、Hot Soup Processor ver3.0以降とともに使用することで、 WindowsのWininet.dllモジュールが持つインターネットアクセス機能を 利用可能にします。 HSPINETを使用することにより、httpによるネット上のファイル取得、 proxyを用いたアクセス、各種ヘッダの設定などを行なうことができます。 また、CRC32、MD5といったファイル内容をチェックするための命令も 用意されています。 HSPINETを使用するためには、Internet Explorer 3.0以降がインストール されている必要があります。 ・インストール 拡張プラグインのファイル、HSPINET.DLLは、HSED3.EXEおよび、HSP3.EXEのある ディレクトリと同じ場所に置いてください。 (実行に使われているHSP3.EXEと同じディレクトリに、HSPINET.DLLがない場合は エラーになります) また、HSPINET.ASをスクリプトと同じディレクトリか、またはcommonフォルダ内に コピーされている必要があります。 HSPINETを使用する場合は、スクリプトの先頭に必ず「#include "hspinet.as"」 という行を追加してください。以上で、HSPの機能が拡張され、このリファレンスで 説明をしている命令を使用することができるようになります。 まず最初に、試しに付属のサンプルスクリプト(test??.as)を実行してみてください。 拡張された機能の簡単な使用例を見ることができるはずです。 ・使い方の概要 HSPINET.DLLは、大きく「http関連命令」「ftp関連命令」「ファイル関連命令」に 分かれています。 「ファイル関連命令」は、ローカルなファイルに対して処理を行なうためのもので、 MD5、CRC32といったファイルのハッシュ値となる値を取得することができます。 「http関連命令」は、netinit命令によって初期化を行なってから、各種命令で httpサーバーとの通信を行なっていきます。 http関連命令は、基本的にサーバーからローカルマシンにファイルをダウンロード してくることが前提になっています。 ファイルのダウンロードには、URL指定とファイル名指定が必要になります。 URL指定では、ダウンロードを行なうファイルを除いたネット上のアドレスを設定 しておきます。たとえば、「http://www.onionsoft.net/hsp/」のような感じです。 その後、netload命令やnetrequest命令、netfileinfo命令などでファイル名を 指定します。たとえば、「index.html」を指定した場合には、先に設定されている URL指定と合わせて「http://www.onionsoft.net/hsp/index.html」からファイルが ダウンロードされることになります。 「ftp関連命令」は、netinit命令によって初期化を行なってから、各種命令で ftpサーバーとの通信を行なうためのものです。ftpサーバーからのダウンロード、 アップロードを含めた多くの機能を持っています。 HSPINET.DLLは、手軽にネット上のファイルをチェックしたり、ダウンロードと ファイル処理を行なうために用意されたものです。 より高度なネットワーク操作、サポート外のプロトコルを使用する場合には、 HSPSOCK.DLLなどソケット通信を行なってください。 また、現バージョンでは複数のストリームを並行して処理することはできません。 ・更新履歴 2005/6/29 ver1.1 ftp関連の命令を追加。 2005/5/7 ver1.0 最初のバージョン。 ・注意点 HSPINET.DLLは、HSP3.EXEと同時に使用されるプラグインファイルです。 使用するHSPは、ver3.0以上をお使い下さい。ver2.61やそれ以前のHSPには 対応していませんのでご注意下さい。 EXEファイルを作成した場合でも、HSPINET.DLLをEXEファイルと同じディレクトリ に置かないと動作しません。また、packfileにDLLを追加することはできません。 ・著作権および連絡先 著作権および、使用の規定についてはHot Soup Processor ver3.0と同様です。 営利・非営利を問わずHSPINET.DLLを自由に配布してかまいません。 onion softwareは本プログラムによって生じた、いかなる損害についても 保証いたしません。自己の責任の範囲で使用してください。 HSPINET.DLLは、Microsoft Visual C++ 7.1でコンパイルされて います。 ・命令一覧 netinit ネット接続の初期化 netterm ネット接続の終了 netexec 最小単位の処理を実行 netmode モードの取得 neterror ネットエラー文字列の取得 neturl URLの設定 netdlname ダウンロード名の設定 netproxy プロキシの設定 netagent エージェントの設定 netheader ヘッダ文字列の設定 netrequest httpリクエスト発行 netload httpファイル取得 netfileinfo httpファイル情報取得 netsize ファイル受信サイズの取得 filecrc ファイルのCRC32を取得 filemd5 ファイルのMD5を取得 ftpopen FTPセッションの開始 ftpclose FTPセッションの終了 ftpresult FTP処理結果文字列の取得 ftpdir FTPディレクトリ移動 ftpdirlist FTPディレクトリリスト取得1 ftpdirlist2 FTPディレクトリリスト取得2 ftpcmd FTPコマンドの実行 ftprmdir FTPディレクトリの削除 ftpmkdir FTPディレクトリの作成 ftpget FTPファイル取得 ftpput FTPファイル送信 ftprename FTPファイル名前変更 ftpdelete FTPファイル削除 ・http関連命令 Wininet.dllを経由してhttpサーバーにアクセスするための命令セットです。 netinit ネット接続の初期化 Wininet.dllの初期化を行ないます。 net〜で始まる命令を使用する際には、最初に1回だけ必ず実行する 必要があります。実行後に結果がシステム変数statに格納されます。 0ならば正常終了、それ以外はエラーが発生したことを示しています。 netterm ネット接続の終了 Wininet.dllの終了処理を行ないます。 通常、この命令はプログラム終了時に自動的に呼び出されるため、 特にスクリプトに記述する必要はありません。 netexec p1 最小単位の処理を実行 p1 : 処理の結果が代入される変数 最小単位の処理を実行します。 サーバーからの応答待ちや、ダウンロード中など時間のかかる処理を 細かい単位で実行します。 メインプログラムでは、await命令などで細かく待ち時間(ウェイト)を 取りながらnetexec命令を呼び出す必要があります。 例: ; 結果待ちのためのループ repeat netexec res if res : break await 50 loop 実行後、結果がp1で指定された変数に代入されます。 内容が0の場合は、処理が継続中であることを意味します。 内容が1以上の場合は、処理が正常に終了していることを意味します。 内容がマイナス値の場合は、何らかのエラーが発生したことを 示しています。 statが0以外の値になった場合は、それに応じた処理を適宜 スクリプト側で処理するようにしてください。 netmode p1 モードの取得 p1 : モード値が代入される変数 現在の処理モードを取得します。 p1で指定された変数にモード値が代入されます。 モード値の内容は以下の通りです。 httpリクエストは、INET_MODE_READYの状態で発行するように してください。 ftpリクエストは、INET_MODE_FTPREADYの状態で発行するように してください。 ラベル | 値 状態 ------------------------------------------------------ INET_MODE_NONE | 0 未初期化の状態 INET_MODE_READY | 1 待機状態 INET_MODE_REQUEST | 2 httpリクエスト受付 INET_MODE_REQSEND | 3 httpリクエスト送信中 INET_MODE_DATAWAIT | 4 httpデータ受信中 INET_MODE_DATAEND | 5 httpデータ受信終了処理中 INET_MODE_INFOREQ | 6 http情報リクエスト送信中 INET_MODE_INFORECV | 7 http情報データ受信中 INET_MODE_FTPREADY | 8 ftp待機状態 INET_MODE_FTPDIR | 9 ftpディレクトリ情報取得中 INET_MODE_FTPREAD | 10 ftpファイル受信中 INET_MODE_FTPWRITE | 11 ftpファイル送信中 INET_MODE_FTPCMD | 12 ftpコマンド送信終了処理中 INET_MODE_FTPRESULT| 13 ftpサーバー返信データ受信中 INET_MODE_ERROR | 14 エラー状態 neterror p1 ネットエラー文字列の取得 p1 : エラー文字列が代入される変数 エラー発生時の詳細を示す文字列を取得します。 p1で指定した変数に、文字列として代入されます。 neturl "URL" URLの設定 "URL" : URLを示す文字列 httpリクエストを行なうURLを設定します。 URLは、ファイル名を除いた形でスキーム名を含めて設定する 必要があります。 「http://www.onionsoft.net/hsp/index.html」の場合は、 「http://www.onionsoft.net/hsp/」までを設定してください。 httpリクエストは必ず、neturl命令によるURL設定を先に 行なっておいてください。neturl命令実行の時点では、 まだhttpリクエストは発行されません。 httpリクエストの発行は、netrequest命令またはnetload命令 によって行なわれます。 netrequest "FileName" httpリクエスト発行 "FileName" : リクエストを行なうファイル名 httpリクエストを行ないます。 先に、neturl命令によりファイル名を除いたURLを指定しておく 必要があります。 netrequest命令でhttpリクエストを発行した後は、netexec命令 により受信処理をスクリプト側で行なう必要があります。 受信処理を自動で行なうためのnetload命令も別途用意されています。 netload "FileName" httpファイル取得 "FileName" : リクエストを行なうファイル名 httpリクエストを行ないます。 先に、neturl命令によりファイル名を除いたURLを指定しておく 必要があります。 netload命令は、ファイルの取得が終了するまで、処理を中断します。 手軽にファイルの取得を行なうことが可能ですが、大きなファイルや 受信状態の悪い場合などは、そのまま画面が停止したままになる 可能性もあるので注意してください。 ファイルの受信中に、並行して別な処理を行ないたい場合には、 netrequest命令を使用してhttpリクエストを行なってください。 netfileinfo p1,"FileName" httpファイル情報取得 p1 : ファイル情報が代入される変数名 "FileName" : リクエストを行なうファイル名 httpサーバー上にあるファイル情報を取得します。 先に、neturl命令によりファイル名を除いたURLを指定しておく 必要があります。 取得に成功すると、システム変数statの値が0となり、p1で指定した 変数に文字列型でサーバーが返した情報文字列が代入されます。 取得に失敗した場合は、システム変数statに0以外が代入されます。 サーバーが返す情報の種類は、httpサーバーによって異なります。 詳しくは、RFCなどhttpプロトコルの解説を参照してください。 netfileinfo命令は、ファイルの取得が終了するまで、処理を中断します。 netdlname "FileName" ダウンロード名の設定 "FileName" : ダウンロードされた時のファイル名 ファイルを取得する際のファイル名を設定します。 netdlname命令によってファイル名を設定していない場合は、 httpリクエストを行なったファイル名が使用されます。 netdlname命令に、空の文字列("")を指定した場合も、 httpリクエストを行なったファイル名が使用されます。 netproxy "ServerName",p1,p2 プロキシの設定 "ServerName" : リクエストを行なうファイル名 p1 (0) : ポート番号 p2 (0) : ローカル接続フラグ http接続の際に使用されるプロキシ(代理)サーバーを設定します。 "ServerName"で、プロキシサーバー名を設定します。 空の文字列("")を指定した場合には、プロキシは設定されません。 p1でhttpが使用するプロキシサーバーのポート番号を指定します。 p2で、ローカルアドレスをプロキシ経由のアクセスから除外するか どうかを設定します。1の場合は、ローカルアドレスのみプロキシから 除外されます。0の場合は、ローカルアドレスも含めてプロキシを 使用します。 netproxy命令が実行されると、それまでのセッションが解除され、 neturl命令や、netheader命令による設定はリセットされます。 例: netinit if stat : dialog "ネット接続できません。" : end netproxy "proxy_server",8080,1 neturl "http://ww.onionsoft.net/hsp/" netload "index.html" netagent "AgentName" エージェントの設定 "AgentName" : 設定するエージェント名 http接続の際にサーバーに渡されるエージェント情報の文字列を 設定します。"AgentName"で指定したエージェント名が設定されます。 空の文字列("")を指定した場合には、デフォルトの設定になります。 netagent命令が実行されると、それまでのセッションが解除され、 neturl命令や、netheader命令による設定はリセットされます。 netheader "HeaderString" ヘッダ文字列の設定 "HeaderString" : ヘッダに追加される文字列 http接続の際にサーバーに渡されるヘッダ文字列を設定します。 空の文字列("")を指定した場合には、無設定になります。 ヘッダ文字列は、通常設定する必要ありませんが、何からの 付加情報や動作設定を行なう場合に使用することができます。 netheader命令で設定したヘッダ文字列は、それ以降のリクエスト すべてに適用されます。 例: ; リファラーを追加する netheader "Referer:http://www.onionsoft.net/\n\n" netsize p1 ファイル受信サイズの取得 p1 : ファイル受信サイズが代入される変数 netrequest命令で発行されたhttpリクエストに対するファイル がどれだけのサイズを受信したかを取得します。 p1で指定された変数にファイル受信サイズが代入されます。 ファイル受信サイズは、netexec命令で受信が行なわれた内容を 調べるためのものです。あらかじめ、ファイル情報取得で ファイルサイズを調べておけば、進行の割合を計ることが可能です。 ・ファイル関連命令 ローカルのファイルに対してアクセスするための命令セットです。 net〜関連命令とは関係なく使用することができます。 filecrc p1,"FileName" ファイルのCRC32を取得 p1 : CRC値が代入される変数名 "FileName" : CRCチェックを行なうファイル名 指定されたファイルのCRC32を求めてp1の変数に代入します。 CRC32は、ファイルの内容をもとに算出された32bitの数値です。 ファイル内容のチェックなどに使用することができます。 filemd5 p1,"FileName" ファイルのMD5を取得 p1 : MD5値が代入される変数名 "FileName" : MD5チェックを行なうファイル名 指定されたファイルのMD5を求めてp1の変数に代入します。 MD5値は、文字列型で「f96b697d7cb7938d525a2f31aaf161d0」のような 32文字の16進数として表現されます。 MD5値は、ファイルの内容を一意に表わすハッシュ値として使用する ことができます。詳しくは、MD5についての資料などを参照してください。 ファイル内容のチェックなどに使用することができます。 ftpopen p1,p2,p3,p4 FTPセッションの開始 p1 : ftpサーバーアドレス(文字列) p2 : ftpログインユーザー名(文字列) p3 : ftpログインユーザーパスワード(文字列) p4 : ポート番号(省略可能) ftpサーバーに接続してセッションを開始します。 p1にサーバーのアドレス、p2にユーザー名、p3にパスワードを 指定してftpに接続します。 p4パラメーターでポート番号を指定することができます。 p4の指定を省略した場合は、標準のポート番号が使用されます。 実行に成功した場合は、システム変数statに0が代入され、 失敗した場合はそれ以外の値が代入されます。 あらかじめ、netinit命令によって初期化を行なう必要があります。 ftpセッションを開始した後は、ftp関連命令のみ使用することが できます。httpなど他のネット操作を行なう場合には、必ず ftpclose命令によりftpセッションを終了させるようにしてください。 ftpclose FTPセッションの終了 ftpopen命令で開始されたセッションを終了させます。 ftpresult p1 FTP処理結果文字列の取得 p1 : FTP処理結果文字列が代入される変数 ftp関連命令による処理に対するサーバーの返信メッセージを 取得して、p1に指定された変数に代入します。 p1の変数には、文字列データとして代入されます。 この命令は、必ずftpopen命令によりftpセッションを開始してから 使用してください。 ftpdir p1,p2 FTPディレクトリ移動 p1 : 現在のディレクトリ位置が代入される変数 p2 : 移動先のディレクトリ名(文字列) p1で指定した変数に、ftpサーバー上のカレントディレクトリ名 を文字列データとして代入します。 p2にディレクトリ名を指定した場合には、その場所へ移動を行ないます。 p2の指定を省略した場合には、ディレクトリ移動は行なわれません。 実行に成功した場合は、システム変数statに0が代入され、 失敗した場合はそれ以外の値が代入されます。 この命令は、必ずftpopen命令によりftpセッションを開始してから 使用してください。 ftpdirlist FTPディレクトリリスト取得1 ftpサーバー上のカレントディレクトリにあるファイルリストを 取得するためのリクエストを行ないます。実際のファイルリストは、 ftpdirlist2命令で行ないます。 実行に成功した場合は、システム変数statに0が代入され、 失敗した場合はそれ以外の値が代入されます。 この命令は、必ずftpopen命令によりftpセッションを開始してから 使用してください。 ftpdirlist2 p1 FTPディレクトリリスト取得2 p1 : ファイルリストが代入される変数 この命令は、必ずftpopen命令によりftpセッションを開始し、 ftpdirlist命令によりファイルリスト取得が終了した後で使用して ください。 以下は、ファイルリスト取得するまでの例です。 例: ; 結果待ちのためのループ ftpdirlist repeat netexec mode if res : break await 50 loop ftpdirlist2 res ファイルリスト取得は、ftpdirlist命令によるリクエスト、 netexec命令による受信待ち、ftpdirlist2命令による結果の取得 という3つの手順に分けて行なう必要があります。 p1に代入されるファイルリストは、1行あたり1エントリごとに 区切られている複数行文字列データになります。 1行は、「"ファイル名"」、ファイルサイズ、更新日時の順番に 「,」で区切られた形になります。 ftpcmd p1 FTPコマンドの実行 p1 : 実行するFTPコマンド文字列 p1で指定されたFTPコマンドを実行します。 実行に成功した場合は、システム変数statに0が代入され、 失敗した場合はそれ以外の値が代入されます。 この命令は、必ずftpopen命令によりftpセッションを開始してから 使用してください。 ftprmdir p1 FTPディレクトリの削除 p1 : 削除するディレクトリを示す文字列 p1で指定されたディレクトリを削除します。 実行に成功した場合は、システム変数statに0が代入され、 失敗した場合はそれ以外の値が代入されます。 この命令は、必ずftpopen命令によりftpセッションを開始してから 使用してください。 ftpmkdir p1 FTPディレクトリの作成 p1 : 作成するディレクトリを示す文字列 p1で指定されたディレクトリを作成します。 実行に成功した場合は、システム変数statに0が代入され、 失敗した場合はそれ以外の値が代入されます。 この命令は、必ずftpopen命令によりftpセッションを開始してから 使用してください。 ftpget p1,p2,p3 FTPファイル取得 p1 : サーバー上から取得するファイル名(文字列) p2("") : ローカルに作成されるファイル名(文字列) p3(0) : 転送モード(0=バイナリ/1=アスキー) ftpサーバー上のファイルを取得します。 p1でサーバー上のファイル名を指定します。 p2でダウンロードして作成されるファイル名を指定します。 p2の指定を省略または""にした場合は、p1と同じ名前が使用 されます。 p3で転送モードを指定します。転送モードを省略または0に 指定した場合はバイナリデータとして、1に指定した場合は、 アスキーデータとして転送を行ないます。 実行に成功した場合は、システム変数statに0が代入され、 失敗した場合はそれ以外の値が代入されます。 この命令は、必ずftpopen命令によりftpセッションを開始してから 使用してください。 ftpput p1,p2,p3 FTPファイル送信 p1 : サーバー上に作成するファイル名(文字列) p2("") : ローカルから送信されるファイル名(文字列) p3(0) : 転送モード(0=バイナリ/1=アスキー) ftpサーバー上にファイルを送信します。 p1でサーバー上に作成するファイル名を指定します。 p2でローカルから送信されるファイル名を指定します。 p2の指定を省略または""にした場合は、p1と同じ名前が使用 されます。 p3で転送モードを指定します。転送モードを省略または0に 指定した場合はバイナリデータとして、1に指定した場合は、 アスキーデータとして転送を行ないます。 実行に成功した場合は、システム変数statに0が代入され、 失敗した場合はそれ以外の値が代入されます。 この命令は、必ずftpopen命令によりftpセッションを開始してから 使用してください。 ftprename p1,p2 FTPファイル名前変更 p1 : 変更元のファイル名(文字列) p2 : 新しいファイル名(文字列) ftpサーバー上のファイル名を変更します。 p1で変更元のファイル名を、p2で新しいファイル名を指定します。 実行に成功した場合は、システム変数statに0が代入され、 失敗した場合はそれ以外の値が代入されます。 この命令は、必ずftpopen命令によりftpセッションを開始してから 使用してください。 ftpdelete p1 FTPファイル削除 p1 : 削除するファイル名(文字列) ftpサーバー上のファイルを削除します。 実行に成功した場合は、システム変数statに0が代入され、 失敗した場合はそれ以外の値が代入されます。 この命令は、必ずftpopen命令によりftpセッションを開始してから 使用してください。 ------------------------------------------------------------------------------- HSP users manual / end of file -------------------------------------------------------------------------------