2007/12/xxXREA.COMのs206サーバー内のサイトは、Yahoo!検索からペナルティを受け、検索結果で常に下位にランク付けされてしまうので、Yahoo!経由向けに用意したHSPミニ講座内のページです。このページは「http://lhsp.s206.xrea.com/hsp_file.html」の昔のものです。HSPその他BMPファイルのイメージサイズを知るまず本題の前に、ファイルの内容を16進数で表示する「バイナリエディタ」というプログラムを紹介しておきましょう。このバイナリエディタをある程度見られるようになってると、ファイル内の構造についての世界が少〜し広がるかと思います。バイナリエディタは色々とリリースされていますが、「Stirling」というソフトがWindows用の定番になっているので、別途入手してください。3.x)に付属している画像ファイル(sample/demo/btn_hsptv.bmp)をバイナリエディタで読み込んだものです。左側(濃い灰色部分)が位置を示す16進数アドレス、中央がバイナリデータ、右側がアスキー文字エリア(メモ帳で開くと文字化けのようにずらずらと表示されるもの)です。バイナリデータにある16進数の2ケタ数値ひとつひとつが1バイト(byte)という単位になります。フォーマット」あたりで検索すると、ビットマップ(Bitmap)の構造や仕様を掲載したページがヒットしますが、BMPファイルは、先頭2バイトが必ず「BM」(0x4D42)となっています。これを利用すれば、BMPファイルであるかの簡易的な判定が可能です(拡張子チェックでも十分でしょうが)。Kpan);読み込んだファイルを格納しておくためのバッファを確保します。buf;wpeek関数で先頭2バイト取り出します。0);ファイルの先頭が「BM」(0x4D42)であるかを確認。"BMPファイルではありません。stop;strf関数で16進数表記に変換したものを表示。h)で、本題の画像のサイズ取得。Xサイズが0x12〜0x15バイト、Yサイズが0x16〜0x19バイトに格納されています。buf;lpeek関数で4バイトそれぞれ取り出します。(13)」からサイズを得ることも可能です。^GIFファイルのイメージサイズを知る細かい情報は、上のBMPファイルの説明を参照。サンプルは省略しますが、GIFファイルであるかの簡易チェックを行うには、先頭が「GIF89a」か「GIF87a」となっているので、lpeek関数で4バイト取り出し、「GIF8」(0x38464947)であるかを見るといいでしょう。ないので注意]四角で囲った0x06〜0x07にXサイズ、0x08〜0x09にYサイズが格納されています。buf;wpeek関数で2バイトそれぞれ取り出します。"+sy+"^ファイルをごみ箱に移動するHSPのdelete命令は、ごみ箱を経由しないでそのままファイルがドライブから削除されます。ファイルをごみ箱に移動する形での削除を行ってみます。stop;このサンプルではあまり意味がないけど、ファイル存在の確認を。stop;ファイルパスはフルパスでなければなりません。取得できますが、ファイル名の部分は取得できません。APIを使うと、自分自身の完全なフルパスを取得できます。ファイル名の部分だけを取り出すには、HSPのgetpath関数で。エディタの[HSP]メニューのHSP拡張マクロを使用する]を要有効。実行ファイル内に埋め込んだHTMLファイルを表示してみることにします。Hacker」を別途入手してください。海外製ですが、日本語表記版も公開されているフリーウェアです。ファイルを読み込みます。[アクション]メニューの[新しいリソースを追加する]を選択し、[リソースを含むファイルを開く]ボタンを押して、埋め込みたいHTMLファイルを選択します。HOGE.HTML)を、[リソースの言語]は、適当に「1033」とでも入力し、[リソースを追加する]ボタンを押します。hogehoge.hrt)。フォルダに置いておいてください。埋め込んだHTMLファイルをexec命令によりブラウザで開いてみるサンプルコードです。exec命令で指定するファイル名は、「res://(自分自身の完全なフルパス)/(埋め込んだHTMLファイル名*)」という形式になります。(*正確には、[リソース名]で指定した名前)で、この自身自身の実行ファイルの完全なフルパス指定に、上のトピックス「自分自身のファイル名を取得」が使えるわけです。(1)+"\\*.exe/(埋め込んだHTMLファイル名)」も一応可能ですが。;先ほど出力したランタイムファイルを指定。16なお、HSPスクリプトエディタ上ではHTMLページは表示されないので、必ず「実行ファイル自動作成」により生成した実行ファイル自体をチェックしてください。ちなみに、ウィンドウ内にオブジェクトとしてHTMLページを表示する場合は、axobj命令だと、開くURLアドレスを同様に「res://〜」形式で指定すればOK。拡張プラグインhspext.dllによるfxren命令がありますが、ファイル名の変更です。元のファイル名から指定された新たなファイル名に置き換えられます。フォルダ(ディレクトリ)名の変更も可能です。95を除いて標準でシステムに含まれています。str^ファイルの属性変更HSP拡張プラグインhspext.dllで用意されているfxaset命令とほとんど同じです。APIのSetFileAttributes関数でファイルの属性を変更してみる。(ZIPファイル)ZIP形式やLZH(LHA)形式は、ファイル圧縮の定番です。HSPには、このような圧縮ファイルを標準命令で解凍(展開)する能力はありません。そこで、圧縮ファイルの解凍を専門に行う外部プラグイン(DLL形式)の力を借りることになります。HSP2ではこのような解凍を行うプラグインを扱うための拡張プラグイン(プラグインのためのプラグイン)というのがリリースされていましたが、HSP3ではわざわざ拡張プラグインを利用する必要性はほとんどないでしょう。ちなみに、解凍を行う外部プラグインは素のPCには当然入っていないので、別途入手してもらって、Windowsのシステムフォルダなりに置いておくという形になります。(逆の「ファイルの圧縮」については、扱ったことがないので触れません。)まずは、ZIP形式を解凍するテキトーなサンプルです。XP/Vista環境では標準で圧縮、解凍の機能が用意されているように、Windowsの世界でもっとも普及している圧縮形式です。PCに導入されているかをチェックします。;GetModuleHandle関数を呼び出し、statに0が返ると未導入。end}stop;ZIPファイルの解凍;正常に終了すればstatに0が、エラーなら0以外が返ります。〜;;ちなみに、パスが「\"」(つまり「"」)で括られていますが、これは仮に;パスにスペースが含まれていても正しく処理できるようにするため。(-t);なんかがあります。返るので、書庫チェック的なこととして利用可。バージョンを取得;戻り値は以下のような感じで返ります。(LZHファイル)まずは、上のZIPファイルの解凍の説明を参照。ZIPファイルの解凍処理とだいたい同じなので、コメントはほとんど端折ってます。LZH(LHA)形式を解凍するテキトーなサンプルです。Windowsの世界では基本的に日本国内でのみ普及してる圧縮形式です。endstop;LZHファイルの解凍;正常に終了すればstatに0が、エラーなら0以外が返ります。