mmfctrl.hpi
ver 0.09 plugin (99/12/10)
A extention plugin to use common memory on HSP ...
- このスクリプトはWindowsの「メモリマップトファイル」という機能を使って、HSPで共有メモリもどきを実現するための拡張プラグインです。
- この拡張プラグインを用いると、スクリプト間で共有メモリを使った情報のやりとりが可能となります。
- また、この拡張プラグインの命令は拙作の
mmfctrl_mod.asと互換性があり、mmfctrl_mod.asをお使い方は#include命令のmmfctrl_mod.asをmmfctrl.asに差し替えるだけで使用できますが、バグ修正を含む多少の変更点があります。
- このスクリプトはフリーで無保証です。使用・改造・添付など御自由にお使いいただけますが、 トラブルには対応できないので各自の責任の下で行なって下さい。
- 拡張プラグイン機能が有効な HSP ver2.4h2 以上で使用できます
- WinNT4(sp5) 上の HSP ver2.5,ver2.4h2 で動作を確認しています
- Windows 95/98 でも動くはず・・・です。(^^;)
mmfctrl.as v0.09 (99/12/10)
LZH圧縮ファイル(11KB)
http://homepage1.nifty.com/dateshim/soft/mmfctrl.lzh(ソース付き)Download
| mmfctrl.hpi | 拡張プラグイン本体 |
| mmfctrl.as | インクルード用スクリプト |
| mmfctrl.cpp | プラグインのソースファイル |
| sample.as | サンプルスクリプト |
| index.html | このドキュメント |
| mmfctrl.hs | HSP Help Tools ヘルプソース |
インストーラーは付属していないので手動でインストールしてください。手順は以下の通りです。
T ファイルを解凍しmmfctrl.hpiを、HSED2.EXEおよび、HSP2.EXEのあるフォルダと同じ場所に置いてください。 U スクリプトを作成する場合には、mmfctrl.asをスクリプトと同じディレクトリ に置き、スクリプトの先頭に必ず #include "mmfctrl.as"
という行を追加 してください。なお、HSP ver2.5以上をご利用の方はmmfctrl.asをcommonフォルダにコピーする事により 以後、mmfctrl.asのコピーは不要となります。
V mmfctrl.hpiは他のHSP拡張プラグインと同様に、EXEファイルを作成した場合でも mmfctrl.hpiをEXEファイルと同じディレクトリに置かないと動作しません。 また、同様にpackfileにプラグインを追加することはできません。 W このプラグインにはHSP Help Tools用ヘルプソースファイルが添付されています。HSP Help Toolsを お持ちの方は、MKINDEXを使用することによって本プラグインの命令リファレンスをHSPのヘルプに組み込むことが 可能となります。詳しくはHSP Help Toolsのマニュアルをご覧ください。
インストールで作成したファイルを全て削除してください。レジストリは使用しないのでご安心を。(^^;)
スクリプトの先頭に
#include "mmfctrl.as"
という行を追加 することによって、以下の命令が使えるようになります。
命令およびその機能 mmfwrite 共有メモリを作成しデータを書き込む mmfread 共有メモリからデータを読み出す mmfdecon 共有メモリを破棄する Commands
mmfwrite - 共有メモリを作成しデータを書き込む mmfwrite p1,p2,p3
- p1 書き込むデータが格納されている変数名
- p2 書き込む共有メモリにつける名前
- p3 書き込むデータの大きさ(Bytes)
[解説]
共有メモリを作成し、そこにp1の内容をp3バイト書き込みます。 また、作られた共有メモリにはp2で指定される名前が付けられます。 既にp2と名付けられた共有メモリが存在している場合は上書きされます。
[前バージョン(ver0.03)からの変更点]
・p3を省略してもエラーにならず、p1の内容を文字列とみなして'\0'(ヌル文字)までを書き込みます。
・p1の内容が空文字列のとき、共有メモリの内容をクリアします。
mmfreadで共有メモリからデータを読み出す場合にその名前が必要となります。
p2に指定する名前を変えることによって複数の共有メモリを作成できます。
名前は255文字までとし、1つのスクリプト内で同時に使用できる共有メモリは256個までです。
成功するとstatに0を返し、失敗するとstatに1を返します。[サンプル]
datawr="書き込むデータ" ;書き込むデータ name="mmfData" ;共有メモリ名 strlen a,dataw ;書き込むサイズを得る mmfread datawr,name,a ;共有メモリに書き込む if stat : dialog "失敗!" mmfwrite
mmfread - 共有メモリからデータを読み出す mmfread p1,p2,p3
- p1 読み出したデータを格納する変数名
- p2 読み出す共有メモリの名前
- p3 読み出すバイト数[NEW]
[解説]
[前バージョン(ver0.03)からの変更点]
パラメータp3が追加。省略すると従来どおりの動作です。
mmfwrite で書き込んだ共有メモリからデータをp3バイト読み出しp1で指定された変数に格納します。
p2に指定する共有メモリの名前はmmfwriteで指定した名前と同一でなければなりません。 また、p1にはmmfwriteで書き込んだバイト数が入るだけの領域があらかじめ確保されている必要があります。
p2に指定する名前を変えることによって複数の共有メモリから読み出しができます。
p3は、省略すると共有メモリの内容を文字列とみなして'\0'(ヌル文字)までを読み込みます。(前バージョン(ver0.03)と同じ動作)これまでのバージョンでは読み出すデータに'\0'があるとそこで読み出しを終了していたために、 バイナリーデータを扱う場合にバグとなっていましたが、p3にバイト数を指定することによって解決されます。
成功するとstatに0を返し、失敗するとstatに1を返します。
[サンプル]
sdim datard,256 ;読み込み用のメモリ確保 name="mmfData" ;共有メモリ名 mmfread datard,name ;共有メモリから読み込む('\0'まで) if stat : dialog "失敗!" mmfread
mmfdecon - 共有メモリを破棄する mmfdecon
[解説]そのプロセスが今までにmmfwriteやmmfreadで操作した全ての共有メモリを破棄します。
また、この命令が実行されても他のプロセスが共有メモリを使用中であれば、破棄されません。 過去に共有メモリに対してアクセスをした全てのプロセスが、共有メモリを破棄した状態。 つまり共有メモリに対してmmfreadもしくはmmfwriteを行なったプロセス数が0の状態になって初めて、その共有メモリは 完全に破棄されます。
mmfdecon
このプログラムはフリーで無保証です。よって、このプログラムを使用して発生した、いかなる損害も保証いたしません。使用・添付は 自由に行ってくださって結構です。再配布・転載もご自由に。でも、オリジナルの著作権は だてしむ にあります。ソースが付属しているので改造も可能ですが、改造モノをネットに 流すときとかはオリジナルと区別できるような配慮をお願いします。m(_ _)m
あと、添付の際はドキュメント付加の必要はありません。だって、こんなドキュメントって配布には邪魔になっちゃうでしょうし。(^^;)
ver 0.09 (plugin) 拡張子をhpiに変更。サイズ0のデータの書き込みの扱いを修正。ソース公開。 ver 0.04 (module) モジュール版。バイナリの扱いのバグを修正。 ver 0.03 (dll) バグが無いようなのでこのまま正式版。HSヘルプ付加 ver 0.02β (dll) ハンドル取得に関するメモリリーク(?)バグを修正。 ver 0.01 (dll) 恐る恐る公開(^^;
相変わらず3命令です。どうやら、これでも結構使えるみたいなので。(^^;)
最後の最後に・・・恒例ながら(汗)、バグ・要望等があれば、報告していただければ幸いです。
だてしむソフトウエア開発局 http://www.mynet.ne.jp/~simodate/
E-mail : simodate@mail.mynet.ne.jp (だてしむ)