イントロダクション

はじめに

Hot Soup Processor (HSP) は、いまや、簡単なツールから本格的なゲームやアプリケーションに至るまで、幅広い範囲で利用されるようになりました。また、無料で簡単にプログラムを書くことができることから、プログラミングの勉強のための言語として使われることも多くなりました。

HSPでは標準命令だけでも多彩なプログラムを作成することができますが、さらに高度な処理を可能とするために、標準以外の外部機能を利用する方法が提供されています。その方法の1つが、HSP専用の拡張プラグインであり、もう1つの方法が、より汎用的な外部DLL関数呼び出し機能なのです。

HSP拡張プラグインは、HSPスクリプトから利用されることを前提とした、拡張子 .dll または .hpi のファイルです。HSPのアーカイブにもいくつかの拡張プラグインが標準で同梱されています。HSPプログラマは、それらのHSPに標準で添付されている拡張プラグインや、他の人が(あるいは自分自身が)作製した拡張プラグインを使用して、より多彩な機能を持たせたり処理を高速にしたりすることができるのです。

一方、汎用の外部DLL関数の呼び出し機能では、外部のDLLがエクスポートされた関数(外部から利用できるように、呼び出しのための情報が外部に公開された関数)を利用することができるようになります。特に最も利用されるのが、OSであるWindowsによって提供されている『Windows API』関数の呼び出しです。Windows APIを利用することでWindowsが持っている機能を細かく制御することができ、HSP単体では持ち得なかったさまざまな機能を実現することができます。そのため、現在では非常に多くのHSPスクリプトでWidnows APIが利用されるようになっています。


そもそも、HSPでWindows APIが利用されるようになったのは、tomさんによってHSP2.4h用に開発された拡張プラグイン『loadlib.dll』と専用モジュール『llmod』が公開されてからでした。この拡張プラグインは、当時のHSP2.4では不可能であった外部DLL関数の呼び出し機能を提供するもので、DLLサイズが4~5キロバイト程度と手ごろであったので、非常によく利用されるようになりました。そして、HSP2.55ではこれらの拡張プラグインとモジュールが標準で添付され、さらにHSP2.6からは、それまでloadlib.dllによって提供されていた命令が、HSPの標準命令として使用できるようになりました。

HSP3では、HSP2時代のloadlib.dll形式の命令は廃止され、新たに関数呼び出しのための手続きが導入されました。これにより、HSP2よりも簡単かつ効率的にWindows APIの機能を利用することができるようになっています。

しかし、Windows APIを使ったプログラミングというのは、通常のHSPプログラミングとは概念や手法が大きく異なるものです。HSP2と比べるといくぶん扱いやすくなったとはいえ、結局はWindowsに関する専門的な知識が必要になります。Windows APIはWindowsの基本的な機能を提供するためのものであり、それらの機能の細かい設定も行うことができるようになっていますが、その分だけ手続きも非常に煩雑になってしまいます。また、構造体やポインタといった、本来HSPではまったく現れない概念を導入していかなければなりません。これらはC言語から扱うのは容易なのですが、HSPから扱うには面倒な作業が必要になるものもあります。そのため、いざWindows APIを使ってみよう、ということになっても、C言語などを知らないプログラマや、初めてWindows APIに触れるプログラマにとっては、いったい何から始めていけばよいのかすら分からないという状況に陥ってしまうことでしょう。

この『Advanced HSP』は、初めてWindows APIに触れるHSPプログラマの方々が、Windows APIを学び、Windows APIを活用したプログラムを自ら作成していくことができるように、必要な知識と技術を身に付けてもらうために公開しているものです。もともとは、筆者自身がWindows APIを学んでいく過程で自分が忘れないようにノート代わりとして書き始めたもので、かつてHSP2用に『HSPの裏技??』および『Windowsの仕組み』というコンテンツとして公開していましたが、それをHSP3用に書き換え、新たに『Advanced HSP』として公開しています。

HSPの基本機能を使えば実現できるものを、わざわざAPIを使って行う必要はないでしょうし、いろいろな方々が開発されている拡張プラグインで実現できるのであれば、そちらを使ったほうがよいかもしれません。ここでは、Windows APIを学ぶために、それを使うことにこだわって機能の実現を図っていくつもりですから、その分だけスクリプトも複雑になってきます。もしも挑戦するのならば、そのことを覚悟しておいてください。

ということで、HSP3におけるWindows APIの解説書を目指すこのAdvanced HSPをよろしくお願いします。

準備

何はともあれ、まずはHSPをダウンロードしてインストールしましょう。HSP3.0以上が必須です。現在の最新バージョンはHSP3.1です。

利用にあたっての注意事項

当『Advanced HSP』の著作権は、筆者であるちょくとが保持しています。

このドキュメントに記載されている内容の正確さは保証できません。すなわち、ここに掲載されている内容が決して正しいとは言いきれません。また、掲載されているスクリプトおよび情報を利用したことによって発生したいかなるトラブルや損害に対しても、筆者は一切の責任を負いません。すべて利用者の責任においてのみ使用してください。

上記の事項を予めご了承下さる場合に限り、この『Advanced HSP』に掲載されているサンプルスクリプトおよびモジュールは、基本的には自由に利用して下さって構いません。スクリプトをそのまま利用したり、一部または全部を書きなおして利用したりすることもできます。また、掲載されている内容を利用して作成されたソフトウェアを自由に公開して下さって構いません。

ドキュメントの閲覧にあたって

このドキュメントは、Internet Explorer 5.5以上で閲覧されることを前提にして記述されていますので、なるべくこれらのブラウザを使用してください。それ以前のバージョンでは、スタイルシートの未対応の要素や、フレームの未対応などがあるために期待通りに表示されない場合があります。

サポート

このドキュメントの内容に関してのサポートは、下記にて行っています。

内容に関する意見・質問・感想などは、できる限り掲示板に書きこむようにお願いいたします。

また、筆者の誤解や記述ミスがある可能性がありますので、間違いなどを発見された方はご連絡お願いします。