◆ 常駐らんちゃVGA 外伝◆

Last update 2001.05.18 追記
Last update 2001.05.16

常駐らんちゃVGAの秘密を暴く!(そんなたいそうなもんか?)


[第一話] Wall Paper ex. Indexダイレクト起動について。
別にお勧めするわけではないのですが、先日Updateした常駐らんちゃVGAの一機能、WallPaper ex.(以下WP) Indexダイレクト起動について、意味不明だったかもしれないので、ちょっと説明をしておきます。本当は、個人的には結構お勧めなんだけどなあ(笑)

もともと、WPには壁紙ランチャーとして、10枚のランチャー画面を持つことが可能です。高機動の名に恥じない高速表示が特徴ですが、登場直後から考えると、それはそれは多くの機能が加わり、たとえばスケジュールやToDo(アクションリスト)を表示させる画面では、情報を起動毎に取得するために、操作可能になるまでちょっと時間かかります。
これはデータ取得動作をするためどうしても仕方が無いことです。
また、本体側のメモリ量の都合から、Card側に壁紙を置く方も多いのではと思います。Card側に壁紙を置いていても思ったほど動作は遅くならないので結構実用的なのですが、いかんせん、10枚もの壁紙を設定していると、HW方向キーでIndex画面を移動するにしても、Index0のランチャー画面から、Index5のランチャー画面に行くのは一苦労です。
ランチャー画面を切り替える途中に、上記説明したスケジュール表示のランチャー画面(仮にここではIndex3とする)があったりすると、さらに時間がかかって大変です。そのために、スケジュール表示を使うことを諦めてしまった人もいたりするのではないでしょうか?

そこで考えました。ダイレクトボタンによる、WPのIndex指定直接起動はできないものか?と。
最初考えていたのは、ファイル名の置換制御です。これは、L.ForceさんのLfMp3Utilや、S.TakeさんがZKIZUなどで実現している方法で、ファイルの拡張子を変更して、上位側のアプリから見えなくしてしまえば、というやつです。本体及びカード側の"WDWWIMG*.DAT"や、新規作成されないように"WDWWAPL*.TXT"を一つしかない状態にしてやれば、WPとしては、その壁紙ファイルで起動するしかなくなるだろう、と。
実際、カードに設定されていた壁紙で終了し、カードを抜いたあと、WPを立ち上げると、本体側のもっともIndex値の小さい壁紙ファイルで起動します。

が、ここで、よくよく考えてみると、WPは、前回終了した壁紙画面を記憶しています。ちょっと調べてみると、どうやらWPは自身の終了時に、”WDWWPREF.PRF”に1byteの情報を書き残しているようです。その1byte情報とは、そのまま壁紙番号の数字でした(これはTwin File Managerのバイナリ表示で確認)。

PRFファイルはプリファレンスファイルと言いまして、Moreアプリから設定状態などを保存するファイルとして扱うものです。拙作の常駐シリーズでも、コマンドライン起動の履歴や、常駐Window位置の終了時保存などで利用しています。
L.Forceさんを例にあげますと、たった一つのプリファレンスファイルに全Moreの設定情報を残すようにしていますね。つまり、ファイルネームと情報保存位置さえわかれば、別アプリからのアクセスも可能かつ容易なのです。
ちなみに情報保存位置は、ダイレクトに先頭からオフセットいくつ、というのではなく、キャラクタ4文字の4bytesアイテム名を使ってアクセスします。形式は、"XXXXY0値"です。XXXXがアイテム名で、Yがアイテムの長さ、その次の0は区切りでしょう。"値"に実際のデータが入っています。ここは、Yの値によりサイズは可変です。

で、このファイルをいじれば、壁紙制御が可能ということはわかりました。アクセス方法はプリファレンスファイルを自分も使っているので、当然知っていますし、ファイルのどこに保存するかという情報である”アイテム名”もTwinFileManagerからファイルを参照してみたのでわかっています(こーゆーのもリバエンと言うのだろうか?)。また、ソースコードも公開されているので、実際に確認することも可能です。

というわけで、技術的な問題点はまったく無くなったので、WallPaper ex.セレクターを作ろうと考えました。ボタンが10個あるやつ(^^;。
しかし、よくよく考えると、10個も壁紙を設定している人っているのでしょうか?(いたらすいません(^^;)
それに、10個全部読めなくても、よく使うヤツだけとか、多くてもとびとびくらいで良いのではないか?それだったら現在公開中のらんちゃMoreに組みこんでしまおう、と作業したのが、現在の常駐らんちゃVGAです。

これは、上記の例で言うと、Index0表示の状態から、Index1〜4をすっ飛ばして一気にIndex5の画面に移行できるというものです。内部処理としては、今まで説明してきたように、プリファレンスファイルを任意のIndex番号に変更してからWPを起動しています。また、WPが起動中だとうまくいかないので、WPが起動中かのチェックをし、起動していたら一度終了させて、それからプリファレンスファイル設定、WP起動、という処理を行っています。

さて、といった内容なんですが、よくよく考えると他人が作成しているファイルにアクセスするのって、ものすごい礼儀違反なのではないかと思ってみたり……。
うーん、というわけで、許可確認メール出しましたところ、快くOKもらえました。どうもありがとうございます。公開しちゃった後に許可依頼っていうのが申し訳ないのですけれど……。

あ、 あと、上記のような作業を行っているということに不安をおぼえる方は、ご利用をお避けくださいね(^^;。


【2001/05/18 追記】
うーん、プリファレンスファイルの格納場所なのですが、どうもかならず本体ファイル側みたいです。よって、WallPaperと別のドライブに常駐らんちゃVGAを置いても、大丈夫なような気がします。考えてみたら、そうじゃなくちゃ、L.ForceさんのMoreみたく、複数のMoreで一つのプリファレンスを扱えたりするわけないですよね。ユーザーがどちらのドライブにMoreをインストールすかなんてわからないのだから。


[Return to More Top]