Gandharva.dll version 0.40.0.8
multi function LiteStep-Module for Winamp2/3
Copyright (C) 2000-2002 HOSHINO Yoshifumi (Yoshi)
http://go.iclub.to/yoshi/
yoshi.fm@anet.ne.jp
$Id: README.HTML,v 1.9 2002/06/26 02:18:19 Yoshi Exp $
目次
- 始めに
- 最終更新
- tips
- step.rc
- step.rc のサンプル
- !bang
- 開発環境
- ライセンス
- 謝辞
このモジュールは マルチメディアプレイヤー Winamp のタイトルを取得して、
表示するモジュールです。同様の機能を持つモジュールに amptitle、LSXCommandClock などが
ありますが、それぞれ日本語環境では、少々常用には難がありました。
このモジュールは他のプレイヤー用への改変をなるべく容易に行えるように設計しています。
お気に入りのプレイヤーがあるなら、ご自由に hack してください。ただし再配布に関しては
GNU 一般公有使用許諾書(バージョン2またはそれ以降)に従う必要があります。
また、このモジュールは習作です。作者はCおよびLITESTEPに関してまだ十分な知識を持っていません。
そのことを十分に承知の上でご使用ください。また、これらに詳しい諸兄の指摘
(ここはこう書くべき、この方がよりスマートになるなど)をお待ちしています。
0.40.0.6 > 0.40.0.8(2002-06-26)
- 追加
-
- gclient とのデータ受け渡しを少し安全にするための色々。
- winamp3 モードで !GandharvaCmdPLEdit が使えるように。
- 修正
-
- *GandharvaMouseMapping で引数を使うコマンドを使える様に。コマンドを引数ごと"〜" で括って。
- ALT-F4 でウィンドウを閉じてしまえた(^^;)のを修正。
- GandharvaCmdPlayTimeout の挙動をすこし行儀よく。
- !bang コマンドのパラメータをNULLで送ってくる module に対して無防備だった。
- 変更
-
- winamp3 およびその SDK を RC1 (build478) に変更。いろいろ変更されたので一部コードを一から書き直した。
- 上記の変更に伴って!GandharvaCmdOpenFile が使用できなくなっています。
- 同じく gclient のウインドウが表示されていないと機能しなくなっています。
過去の更新履歴、より詳細な情報ついてはCHANGES.TXTを参照してください。
winamp の各種設定について
Winamp の Preferences>Options>Display の"Scroll song title in the windows taskbar"
は Off にしてください。表示が大きく崩れます。
Winamp 2/3 を起動するために 実行ファイルの PATH を指定する必要はありません。ファイルタイプの
"Winamp media file" に関連づけられているEXEファイルを レジストリから探して起動します。
アンチエイリアスと背景色の設定について
windows の設定によって、フォントの色と背景色でアンチエイリアスが起こります。
この現象はスキンを使用する場合も同様で、この場合、背景色で縁取りをしたように見えます。
背景色を調整するか、windows の設定を変更することによってこれを回避してください。
(コントロールパネル>画面のプロパティ>"効果"タブと進み、"スクリーンフォントの縁を
滑らかにする"のチェックを外す (win2k の場合))
マウスクリックによる動作と再定義機能の仕様について
時間表示を左クリックすると、起動後でも経過表示と残り表示を切り換えられます。
ウィンドウを右クリックすると Winamp を右クリックしたときに現れるメニューを表示できます。
タイトル表示を左ダブルクリックすると、ボリュームコントロールのダイアログが表示されます。
以上が規定の動作です。また、これらを再定義することができます。その場合以下の制限があります。
- 領域の優先順位は ウィンドウ全体 > タイトル表示 > 時間表示 である。
例えば 左クリックを ウィンドウ全体と時間表示に指定しても両方は動作しません。
ウィンドウ全体への指定のみが優先して実行されます。
また、時間表示とタイトル表示は両方に指定可能です。ただし両方の領域が Padding の設定で
重複しているとき、その範囲ではタイトル表示領域への指定が優先されます。
- 基本的には同じ領域に対してクリックとダブルクリックの両方を指定できない。
ダブルクリックをするとクリックへの指定したものも反応してしまいます。
winamp3 と gclient.wac について
winamp3モードを使う場合は glient.wac を使います。
これは winamp3 が Gandharva へデータを送信し、コマンドを受け取るために使用するコンポーネント(プラグイン)です。
インストールは、winamp3 フォルダ内の wacs フォルダ(デフォルトは C:\Program Files\winamp3\wacs)にコピーするだけです。
gclient のウインドウを表示すると機能します。
また現在winamp3モードには以下の制限があります。
- なんといってもwinamp3は開発途中である。
現在お使いのバージョンの winamp3 に対応する SDK でコンパイルし直す必要があるかもしれません。
また、そうしても正しく動かないこともあり得ます。
- gclient.wac も開発中である。
安全のために gandharva.dll と gclient.wac はバージョンの整合がとれないと機能しないように設計してあります。
gandharva.dll が古くても、gclient.wac が古くても 正しく交信できません。
- !GandharvaCmdExtension は、使う意味がない。
(使えることは使えるが今のところ play, next などのベーシックなコマンドのみ)
- あなたがチャレンジャーである必要がある。
思いつきで実装しているので…。
ソースをコンパイルするために
winamp3 用のコンポーネントをコンパイルするためには Wasabi (winamp3) SDK
が必要です。バージョンは RC1(build478) を想定しています。SDK 自体も β であるために
バージョンが上でも下でも動かない(コンパイルも通らない)でしょう。
入手先は www.winamp.comから
Get Winamp3 beta というリンクを辿った所です。そこから player、sdk 共にダウンロードできます。
また、Gandharva.dll 本体のみをコンパイルする場合は上記の SDK は必要ありません。
導入は LoadModule してください。また、wharf には入りません。新しいものは new、仕様が変更されたものは update がついています。
-
Integer / 0
GandharvaCmdPlayTimeout
- winamp を起動していない状態で !GandharvaCmdPlay を実行したとき、winamp が起動しますが、
この設定によって自動で再生を開始できます。タイムアウトまでの時間を秒で指定します。
0 以下の値を指定したとき、またはこの設定自体をしない場合、自動再生は行いません。
String / none
*GandharvaMouseMapping where button clicks !bang
update
- マウスクリックによる挙動を定義します。一つでも定義するとデフォルトの挙動をリセットします。
今までの GandharvaMouseXXYZ で使用できない中クリックを使用できます。構文は
- where
- どこをクリックするかを指定します。
- all....ウィンドウ全体をターゲットにします。
- title..タイトル表示をターゲットにします。
- time...時間表示をターゲットにします。
- button
- マウスのボタンを指定します。
- right...右ボタンを使用します。
- middle..中ボタンを使用します。
- left....左ボタンを使用します。
- clicks
- クリック/ダブルクリックを指定します。
- click...クリックです。
- dblclk..ダブルクリックです。
- !bang
- コマンドを記述します。パラメータを伴うコマンドを使用する場合は
*GandharvaMouseMapping title left dblclk "!GandharvaCmdExtension 40188"
の様に"〜"で括ってください。
デフォルトの動作は次のように定義しています。
*GandharvaMouseMapping all right click !GandharvaDispMenu
*GandharvaMouseMapping title left dblclk !GandharvaSndVol
*GandharvaMouseMapping time left click !GandharvaToggleTime
String / "winamp2"
GandharvaPlayerType String
- 使用する winamp のバージョンを指定します。winamp3 を使用する場合は gclient.wac のインストールが必要です。
"winamp2" / "winamp3" が指定できます。
Boolean / false
GandharvaHiddenAmp
- 本モジュールから Winamp を起動するとき、winamp のウィンドウを表示するかしないかを指定します。
Integer / 0
GandharvaX [C][+|-]###
Integer / 0
GandharvaY [C][+|-]###
- モジュールを表示する X 座標および Y 座標です。共に負の値を受け付けます。
負の場合はスクリーンの右(下)からの座標になります。
また、数値の前に C を付けると画面中央からの位置指定と解釈します。
GandharvaX 120 画面左から120pixel
GandharvaX -200 画面右から200pixel
GandharvaX C-80 画面中央から左に80pixel
String / none
GandharvaMouseXXYZ [String]
- 旧式のコマンドです。中ボタンにマップできません
このコマンドでマウスクリックによる挙動を定義します。一つでも指定するとデフォルトの挙動をリセットします。
XX Y Z をそれぞれ、
- XX..[AL / TT / TM]
- ウィンドウ全体/タイトル表示/時間表示 の領域を〜
- Y...[L / R]
- 左ボタン/右ボタン で〜
- Z...[C / D]
- クリック/ダブルクリックしたとき。
に置き換えます。規定の動作を例に示します。
GandharvaMouseALRC ウィンドウ全体(AL)を、右(R)クリック(C)したとき
GandharvaMouseTTLD タイトル表示(TT)を 左(L)ダブルクリック(D)したとき
GandharvaMouseTMLC 時間表示(TM)を 左(L)クリック(C)したとき
Boolean / false
GandharvaForceTransp
- 現在使用している背景色を透過色にします。
背景透過時にアンチエイリアス機能を使いたいときに指定します。
ただしこの指定をしても スキン(BITMAP)の透過色は常に FF00FF です。
String / none
GandharvaBitmap [filename]
- モジュールの背景に使用する BITMAP(スキン)を指定します。
BITMAP 内で FF00FF の色を使用している部分が透過されます。
配布されている theme から BITMAP を流用する場合のために GandharvaForceTransp
でもこの透過色は変更しません。
String / none
GandharvaTime [elapsed | remain]
- Winamp の時間表示を行います。現在のトラックの経過時間、残り時間を表示する事ができます。
- elapsed
- 経過時間
- remain
- 残り時間(マイナス符号がつきます)
またこの指定が未定義の場合、時間表示はされません。
String / GandharvaFont
GandharvaTimeFont [String]
COLORREF / GandharvaFontColor
GandharvaTimeFontColor [RRGGBB]
Integer / GandharvaFontSize
GandharvaTimeFontSize ###
Boolean / GandharvaFontBold
GandharvaTimeFontBold
Boolean / GandharvaFontBold
GandharvaTimeFontItalic
- 時間表示のフォントに関する設定です。それぞれの内容はタイトル文字列への指定と
同内容ですのでそれぞれを参照してください。
Integer / 0
GandharvaTimePadding # # # #
Integer / 0
GandharvaTimePadding #
- それぞれの一辺から時間が表示される領域までの余白の幅を上、右、下、左の順に
指定します。指定が一つだけの場合、全て同じ値が指定されたと見なします。
すなわち以下の二つの指定
GandharvaTimePadding 3 3 3 3
GandharvaTimePadding 3
は同じ意味を持ちます。またタイトル文字列の領域と重複する場合、こちらを下にして重ね合わせます。
Integer / 0
GandharvaBorderSize # # # #
Integer / 0
GandharvaBorderSize #
-
上、右、下、左の順にそれぞれ4辺の枠線の幅を指定します。
指定が一つだけの場合、全て同じ値が指定されたと見なします。
すなわち以下の二つの指定
GandharvaBorderSize 3 3 3 3
GandharvaBorderSize 3
は同じ意味を持ちます。
Integer / 0
GandharvaPadding # # # #
Integer / 0
GandharvaPadding #
- それぞれの一辺からタイトルが表示される領域までの余白の幅を
上、右、下、左の順に指定します。指定が一つだけの場合、
全て同じ値が指定されたと見なします。すなわち以下の二つの指定
GandharvaPadding 3 3 3 3
GandharvaPadding 3
は同じ意味を持ちます。また、時間表示の領域と重複する場合、
こちらを上にして重ね合わせます。
String / "left"
GandharvaTextAlignH [left|center|right]
- タイトルをスクロールさせない場合、もしくはその必要がない場合に
表示する位置を指定します。それぞれタイトルを左詰、中央、右詰して表示します。
String / バージョン表示
GandharvaDefaultString [String]
- Winamp が起動していないときにウィンドウに表示される文字列を指定します。
128バイト以下は切り捨てます。
String / "basic"
GandharvaCommandMode [none | basic]
- Winamp コントロール の為の !bang コマンドモードを指定します。
どちらかを選択してください。詳しくは !bang コマンドの項を参照してください。
- none
- コントロールをいっさい行わないか、他のモジュールに任せます。
Gandharva は Winamp 操作のための !bang コマンドを登録しません。
- basic
- 基本的な(Winamp 前面のボタン)操作に加えて nullsoftで 公開されている全ての操作を行えます。
(現在は winamp3 モードでは一部制限があります)
Boolean / false
GandharvaKeepPrefix
Boolean / false
GandharvaKeepSuffix
- それぞれWinamp のタイトル表示でPrefix、Suffixを削除しません。
- Winamp2.xx
- Prefix=TrackNo, Suffix="- Winamp (STATUS)"
- Winamp3.xx
- gclient で整形して gandharva に送るので、この設定は無視します。
Boolean / false
GandharvaAlwaysOnTop
Boolean / false
GandharvaHidden
- LiteStep起動時、および再起動時に非表示にします。
Integer / 100
GandharvaWidth ###
Integer / 20
GandharvaHeight ###
- モジュールの幅、高さを指定します。スキンを使うときはBMP のサイズが自動的に指定されます。
COLORREF / 000000 (黒)
GandharvaBGColor [RRGGBB]
- ウィンドウの背景色を指定します。Windows の設定によってはこの色とフォントの色で
アンチエイリアスが起こります。これはスキンを使用している場合も同様で、背景色で縁取りした
様に見えます。回避するにはこの色を調整してください。
また、FF00FFを指定したとき壁紙を透過して表示します。
GandharvaForceTransp を指定したときはこの色を透過色に使用します。
COLORREF / 888888 (グレー)
GandharvaBorderColor [RRGGBB]
- モジュールの枠線の色を指定します。透過色を指定したときは壁紙が透過します。
String / "MS UI Gothic"
GandharvaFont [fontname]
Integer / 16
GandharvaFontSize ###
COLORREF / FFFFFF(白)
GandharvaFontColor [RRGGBB]
- タイトルを表示するフォントの色を指定します。Windows の設定によっては、この色と背景色 (GandharvaBGColor) とで
アンチエイリアスが起こります。スキンを使用する場合は背景色を調整してください。
Boolean / false
GandharvaFontBold
Boolean / false
GandharvaFontItalic
- フォントの自体をそれぞれ太字、イタリック体にします。
Boolean / false
GandharvaAutoScroll
- タイトルの長さが枠内に収まらないとき、テキストが左へスクロールします。
Integer / 500
GandharvaScrollInterval ###
- スクロール時の再描画の間隔を ms (ミリ秒)で指定します。この値が小さいほどスクロールの速さが上がります。
Integer / 4
GandharvaScrollStep ###
- スクロールの滑らかさをドット単位で指定します。この値が小さいほどスクロールは滑らかに
なりますが、スクロールの速度は遅くなります。
作者の step.rc 設定です。サンプルとして。
GandharvaCmdPlayTimeout 10
GandharvaPlayerType winamp2
GandharvaAlwaysOnTop
GandharvaX -520
GandharvaY 0
;GandharvaWidth 200
;GandharvaHeight 20
;GandharvaHidden
;GandharvaHiddenAmp
;GandharvaDefaultString "Gandharva ready!"
GandharvaFont $FontFace$
GandharvaFontSize 13
GandharvaFontColor FFEECC
GandharvaFontBold
;GandharvaFontItalic
GandharvaPadding 4 4 2 42
GandharvaTextAlignH center
;GandharvaForceTransp
GandharvaBitmap skin_ampdisp.bmp
GandharvaBGColor 733325
;GandharvaBorderColor FF00FF
;GandharvaBorderSize 2 0 2 0
GandharvaAutoScroll
GandharvaScrollInterval 50
GandharvaScrollStep 1
;GandharvaKeepPrefix
;GandharvaKeepSuffix
GandharvaCommandMode basic
GandharvaTime elapsed
GandharvaTimeFont $FontFace$
;GandharvaTimeFontColor 000000
GandharvaTimeFontSize 13
;GandharvaTimeFontItalic
GandharvaTimeFontBold
GandharvaTimePadding 3 135 3 5
*GandharvaMouseMapping time left dblclk !GandharvaCmdPlay
*GandharvaMouseMapping time right click !GandharvaToggleTime
*GandharvaMouseMapping title right click !GandharvaDispMenu
*GandharvaMouseMapping title left dblclk "!GandharvaCmdExtension 40188"
ウィンドウコントロール
Gandharva の表示をコントロールします。
- !GandharvaHide
- 現在の状態に関わらず、Gandharva ウィンドウを非表示にします。
- !GandharvaShow
- 現在の状態に関わらず、Gandharva ウィンドウを表示状態にします。
- !GandharvaToggle
- Gandharva ウィンドウの表示、非表示を切り換えます。
- !GandharvaToggleTime
- 時間表示を経過、残りと切り換えます。
- !GandharvaSndvol
- sndvol32.exe (ボリュームコントロール)を起動します。
- !GandharvaDispMenu
- Winamp のメインメニューを表示します。
- !GandharvaToggleOnTop
- Gandharva ウィンドウの最前面/非最前面を切り換えます。
- !GandharvaOnTop
- Gandharva ウィンドウを最前面に配置します。
- !GandharvaNotOnTop
- Gandharva ウィンドウを非最前面に配置します。
Winamp コントロール
Winamp を shortcut などで操作できます。また GandharvaCommandMode none
とすることによってこれらを無効にできます。
- !GandharvaCmdPrev
- 一つ前のトラックに戻ります。
- !GandharvaCmdPlay
- 現在のトラックを再生します。Winampが起動していない場合は
立ち上げます。(再生しません)
- !GandharvaCmdPause
- 再生中のトラックを一時停止します。
また一時停止中のトラックを再開します。
- !GandharvaCmdStop
- 再生中のトラックを停止します。
- !GandharvaCmdNext
- 次のトラックに進みます。
- !GandharvaCmdPLEdit
- プレイリストの表示/非表示をトグルします。
- !GandharvaCmdOpenFile
- Open File(s) ダイアログを開きます。
- !GandharvaCmdPower
- Winamp を 起動/終了 します。
- !GandharvaCmdExtension #####
- Winamp に送るメッセージのパラメータを指定する形で実装されています。
これによって Nullsoft が公開している全ての操作が可能です。
メッセージの一覧は APPENDIX1.TXT に記してありますのでそちらを参照してください。
例
!GandharvaCmdExtension 40154 プレイリストの先頭に戻ります。
!GandharvaCmdExtension 40144 5秒間巻き戻します。
Microsoft Windows 2000(SP2+SRP1)
Litestep 0.24.6 2002-02-16 (ShellFront + japanese patch)
Borland C Compiler 5.5.1
Microsoft Visual C++ 6.0(SP5)
winamp2 v2.80
winamp3 RC1 (build 478)
wasabi SDK RC1 (build 478)
LoadModule $litestepdir$desktop2.dll
LoadModule $litestepdir$shortcut2.dll
LoadModule $litestepdir$hotkey.dll
LoadModule $litestepdir$popup2.dll
LoadModule $moduledir$tasksj.dll ; version .92 (j hack)
LoadModule $moduledir$dwarf.dll ; version 1.11 hacked 1
LoadModule $litestepdir$systray2.dll
LoadModule $moduledir$gandharva.dll ;本モジュール
LoadModule $moduledir$Nornir.dll ;拙作時計表示モジュール
動作確認も上記の環境で行っています。
Gandharva.dll
copyright (C) 2000-2002 HOSHINO Yoshifumi (Yoshi)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
このモジュールの前身 AmpDisp.dll は Gustav Munkby氏 のGrdTray(v2.3 beta 2) を
hack して作成しました。自分で書き直した本モジュールも大まかな流れは非常に
参考になっています。有用なプログラムをソースコードと共に公開していただき、感謝し
ています。
また、LITESTEPに関する情報を公開されているすべての webmaster 様 に感謝します。