Kaze-Gumi

日記

2008-09-19-02(金)

xlabelでちょっとした情報を出力してみる

いろいろ情報を出力したいのなら、xStatsClass.dllというのも必要になる
情報といっても、CPU使用量だとか、現在時刻だとか、そういう類のものだが
ただし、単純に任意の文字を出力するだけならxStatsClass.dllはいらない

・最低限、必要なファイル
xStatsClass-1.0.dll(置き場所は任意)

・モジュールのロード(当然、フォルダ記述も必要。以下の例はフォルダ部分省略)
loadmodule xStatsClass-1.0.dll

当然、xlabelもロードしてあるのが前提

・前準備
まず、ラベルを表示させないと意味がない

*label testpanel
testpanelX 0
testpanelY 0
testpanelWidth 240
testpanelHeight 48
testpanelPaintingMode ".multicolor"
testpanelColors c9c9c9
testpanelGradientColors 666666
testpanelGradientType ".vertical"
testpanelBorderMethod ".raised"

・labelText
testpanelText "TEST"

このように「Text」を指定すると、任意の文字をラベル内に表示できる
先にも述べたように、これは、xStatsClassは必要ない
この場合、ラベルのど真中に「TEST」と表示される
これが基本

testpanelText "TEST 1<br>TEST 2"

「Text」には、一部のHTMLタグが使用できる
改行をする場合は、"<br>"を使えばよい

・フォントの基本指定
testpanelFont "MS UI Gothic"
testpanelFontCharSet "SHIFTJIS_CHARSET"
testpanelFontHeight 10
testpanelFontColor 000000

とりあえず、最低限必要であろうもの
フォント名の指定、文字コード指定、フォントサイズ、色である
特に、出力文字が日本語文字の場合「FontCharSet」は重要になる
"DEFAULT_CHARSET"でも出るような気がするが、環境依存になりそうだし
"SHIFTJIS_CHARSET"を指定しておく
残念ながら、Shift-JISだけっぽい
まあ、ここで、EUCとかUTF-8とか使う必要もないだろうが
ファイル内容の一部を表示みたいなこともできるので、そういうとき気を付けたい

文字色は、背景にグラデかけてると読みづらい状態になることもある
まあ、このへんはLSに限ったことではないので割愛

・日付時刻を表示してみる
testpanelText "[date('yyyy.mm.dd(ddd)')]<br>[time('ii:nn:ss')]"

ブラケット「[]」は、xStatsClassの機能を表す
この機能のことを、エスケープシーケンスと呼んでいる
DOSとか使ってた人間には懐かしい呼び名(今もコード書いてる人間には使われると思うが)

ここでは

[date('yyyy.mm.dd(ddd)')]
[time('ii:nn:ss')]

この2つの機能を使っている
「date()」が日付埋め込み、「time()」が時刻埋め込みになる
いずれも「()」内が、フォーマット指定となり
「4桁年.2桁月.2桁日(曜日略)」(この"()"や"."はただの文字列)、
「2桁時:2桁分:2桁秒」を意味する

曜日の文字列に関しては、おそらくOSでの設定が有効になっている
日本語環境だと、日、月、火…という具合に出る模様
FontCharSet変えても、Sun、Monみたいにならない

このText設定を表示してみるとわかるだろうが
ちゃんと秒数がリアルタイムに変更される
つまり、xLabelは常に一定間隔で更新されている
(この間隔に関する設定「UpdateAlways」「UpdateInterval」もある)

・システム情報っぽいものを表示させる
testpanelText "[cpuInfo('brandid')] [cpuSpeed] [cpu()]%"
testpanelScroll "horizontal"

こうすると、CPUブランド名、CPU稼働スピード、CPU使用率が表示される
たぶん、1行で収まりきらないと思うので「Scroll」でスクロール表示させている

他にも、ディスクやメモリ、スワップ使用量など、いろいろ用意されている

memAvailable(units)
memInUse(units)
memTotal(units)
swapAvailable(units)
swapInUse(units)
swapTotal(units)
diskAvailable('drive', units)
diskInUse('drive', units)
diskTotal('drive', units)

Available が空き、InUse が使用量、Total が全容量
"units"には、「bytes」「KB」「MB」「GB」「%」というように表示単位を指定する
ディスクに関しては、'drive'、つまりドライブ名を指定する必要がある

testpanelText "C: [diskAvailable('c:',GB)]GB"

あくまでも、表示単位を指定してるだけで
結果に「GB」とかはついてこず、数値のみが返ってくるから
単純文字列として、後に"GB"とか書いておいてやらないといけない

testpanelText "MEM: [memAvailable(MB)]/[memTotal(MB)]MB([memAvailable(%)])%"

このように、一度に同じ項目を何度も呼び出してよい

volume()

なぜか、マスターボリューム値の呼び出しは、%が付いて返ってくる
ちなみに、「volume('winamp')」とすると、winampのボリューム値が返ってくるらしい
また、winampの曲名等の表示もできる
foobar2kは、foo_winampspamコンポーネントを入れたら、同様に扱えるらしい
たしかそうだったなと思うが、今、この項目使ってないからわからんw

ログオンユーザ名(userName)、OS名(OS)といったものは、引数を持たないので
"[OS]<BR>[username]" のように「()」を付けなくてもよい

全部説明しだすとキリがないので、他に何があるかは、xLabelのヘルプに譲る
一部機能は、環境によって使えないものもある(マザボの状態とか)

他に、文字列操作関数的な機能、if〜elseif〜endifの形の構文機能もあるが
またの機会に

Relay Keyword's Recent Title

Recent Images

img-03img-02img-01img-01img-01img-01img-02img-01img-02img-01

Prev: とりあえずxLabelでパネルっぽいものを作ってみる | Next: パネルを動かしてみたり | 2008-09-19 | 2008-09 | 2008 | RSS | 最新の日記