WSH Panel Mod(JScript Panel) の基本事項



●WSH Panel Mod(JScript Panel) とは何か?

foobar2000上でスクリプトを実行させるコンポーネント。

まずWSH Panelが作られた。更新が中断している、推奨されないコンポーネント。
WSH Panel Modは別の人が作った改造版。
JScript Panelはさらに別な人が仕切り直した最新版。

WSH Panel Modとの違いはVBScriptのサポートをやめたことと、多少のインターフェイスの変更。
同じプログラムがほぼ動くので、foobar2000の最新版を使っていくつもりの人はJScript Panelに移行するのが良いと思われる。
ただ現時点での互換性はかなり高いが、将来的にはどうなるかわからない。もしWSH Panel Mod用のスクリプトを流用して、エラーが出たなら自力で直すくらいの根性が必要ではある。

Updating WSH Panel Mod scripts for JScript Panel


●JScriptとJavaScript

一昔前、Netscape(とSUN)が開発したJavaScriptがブラウザ界で流行りそうだった。
焦ったマイクロソフト(ライセンスが貰えなかった)がIE用に丸パクリしたのがJScript。
文法的には一緒。
ただ全く同じだと世間に色々言われるので、Windowsの機能にアクセスできるようにした。
Web用じゃないですよー、Windowsのプログラム用の言語ですよー、として出したのがWindows Script Host、略称WSH。
でもWindowsにはIEが付属していたので、当然IEでも使われたのだ。まあ一言でいえば、姑息。
余計なことをしたせいでJavaScriptとの互換性が一部失われていて、IEだけ動かない場面が続出し、Webプログラマにさんざん罵られた。

Jscript Panelで使えるのはJScript。
GoogleさんではJScriptを検索してもJavaScriptのページが(勝手に)出てきたりして、ややこしい。(しかもCSSやらHTMLとかこっちには関係ねえよ、というページが多い)
文法は同じなので変数とか制御構造とか分岐とか基本的なところは解説が豊富なJavaScriptで学んで、あとは実地でやるしかない。


●具体的な書き方

まずプリプロセッサ部でスクリプト自身の情報を書く。必要なら外部のライブラリやスクリプトを読み込む。
次に初期設定をし、起動時に行う処理を書く。(起動時に一回、暗黙的にon_paintが呼ばれる)
ここでスクリプトはいったんアイドル状態になる。
あとはコールバックで呼び出されるたびに、それに応じた処理を行うことになる。
コールバックによって呼び出される処理(とそれに付随する関数その他)を個々に書く。

Image_computer/script.png

コールバックのトリガはいろいろある。
*新しい曲に変わった
*プレイリストに曲が加わった
*タイマーで秒ごとに
*クリックされた
*ウィンドウのサイズが変わった
etc...。

色々あるが、ほとんどはデフォルトで問題ない。必要なところだけ書く。
画面を書き換える必要がある場合、window.Repaint()を呼び出すとon_paint(){}が実行される。(window.RepaintRect()で一部分だけ描き換えることも可)




*おまけ コールバックって何?

例えば、あなたは病院に勤務する看護師で、夜勤を一人でしていたと仮定しよう。
患者はいつ、誰の病状が悪化するか予測できない。
最悪の事態を未然に防ごうと思えば、あなたは絶えず病室を次から次へと巡回しなければならない。巡回中に、他の部屋の患者が悪化するかもしれない。

ここで、「病状が悪化したら患者さんにボタンを押してもらう」というルールと、ナースステーションと廊下に「ボタンが押されたらどの患者か知ることができる、光るランプ」のシステムを加えてみよう。いわゆるナースコールである。
あなたは病状が悪化した患者に即座に対応できるうえに、巡回の頻度を少なくしてナースステーションで事務をしたり、お茶で一息つくことができる。

ここでいうコールバックは、「何かが起きたらそれに対応するランプが光る」仕組みだと思ってもらっていい。
具体的には、on_で始まる関数があらかじめ複数設定されており、ある動作が行われた時に特定の関数が実行される。
逆に言えば特定の関数が実行されたということは他の原因を考慮する必要がないということであり、それに対応する処理だけを書けばいいことになる。
その関数を上書きすることで、CPUの負担を減らし、思い通りの結果が得られる。
めでたしめでたし。

 

コメントは日本語でお願いします。(URLは入力禁止:Do not URL writing.) :System message: コメントを受けつけています。