Darwal OSでaxファイル実行しているときのmciについて

with コメントはまだありません

どうやらHSPThread.dllの性質上、Darwal OS上でaxファイルを実行しているときに、

axファイルでmciを扱うと、そのaxファイルを実行しているウィンドウを閉じた後に、

別のmciを扱うaxファイルを実行すると動作が停止するようです。

 

そこで、対策を考えてみました。

 

①共有メモリを利用する

Darwal OS上でaxファイルを実行しているウィンドウを閉じたときに、

共有メモリを利用して「ウィンドウが閉じられた」という情報をaxファイルに送ります。

ウィンドウが閉じられたという情報が送られたら、axファイル側ではmciを閉じる動作を行います。

ただしこれは、実行する側のaxファイルがこの仕組に対応していなければなりません。

 

②共有メモリを使わずにテキストファイルでやり取りをする

基本的な流れは①と同じですが、axファイルとDarwal OSとでやり取りする際に、

共有メモリではなくテキストファイル(about.aaxなど)で情報を送ります。

作者自身まだ「共有メモリ」というものを扱ったことがないので、

共有メモリに挫折したらこの方法を取ります。

 

③mciを使ったaxファイルを実行しないようにお願いする

最終手段。ユーザーにmciを使ったaxファイルを実行しないように「お願い」します。

これが一番簡単な方法です。だって改善する必要が無いんだから。

ただしこれをやるとCities Boxやタマゴトリなどmciを扱ったaxファイルを実行できなくなります。

 

…まあ、③はありえないと思いますが、今後はこのあたりを改善していきます。

 

因みにWalls LuxorもDarwal OSと同じ仕組みなので同じバグが有るんですが、

そもそも現時点でWalls Luxorではaxファイルを実行した時点で他のウィンドウ(エクスプローラーなど)が

反応しなくなるバグがあるため、このバグに出くわすことはおそらくないと思います。

 

追記

もう一度確認してみたところ、どうも原因はmciではないような気がするんですが、

やはり同じソフトを「一旦閉じてまた実行する」という操作をすると動作が停止することがあるようです。

ただしこれはすべてのアプリで起こるわけではなく、Cities Boxなど一部のアプリのみです。

そこでaxファイルを実行しているウィンドウを閉じたときに、end命令をaxファイル側で実行するなど、

いろいろと試していきたいと思います。

Leave a Reply