TITLE:Osuwari.dll version 2 取り扱い説明書 version2.0.2.0
*1.これは何をするものか [#j56f3c33]
これはSAORI規格のDLLです。ゴーストの位置を様々なロジックに従い、特定のウィンドウの矩形と同期させる機能を持ちます。ゴーストをウィンドウに「座らせる」「貼り付ける」「ぶら下げる」といった事を目的として作成されました。
Osuwari.dllはversion1が過去に公開されており、これは機能強化したversion2となります。
尚、本DLLはmateriaでは動作しません。SSPもしくはCROWで利用してください。
*2.利用法概要 [#cbccc995]
ゴーストの位置の制御を開始する、あるいは制御パラメータを変更するには、START構文を用います。START構文はゴーストの存在する間、何度呼んでも構いません。
一般的には、HWNDイベントの際に呼ぶことを推奨します。一度呼べばその際の制御パラメータに従い、DLLがアンロードされるかSTOP構文が呼ばれるまで位置の制御を行うため、呼び出し続ける必要はありません。
お座りを停止させる場合にはSTOP構文を用いてください。一般的にはゴーストの終了と共にDLLがアンロードされるため、STOP構文を利用しなくても問題ないでしょう。
このDLLはオプションが多彩なため構文が少々複雑です。単純に利用する場合は4.記載例を先に見てください。
*2.START構文 [#c0497df1]
**(1)構文 [#m625e910]
START構文は以下のパラメータを記載してください。~
(START等、この書体で記載されているものは、その通りの文字列を記載する事を示します)
|Argument|記載内容|説明|h
|Argument0|START|大文字文字列で記載|
|Argument1|制御対象のHWND|一般的にはHWNDイベントで渡されます。(4.記載例も見てください)|
|Argument2|追尾対象|下記の何れかを記載してください。&br;ACTIVE:アクティブウィンドウを対象にします&br;FIX:画面全体もしくはワークエリア(画面からタスクバー等の領域を除いた部分、つまり壁紙が見えている部分)を対象にします。&br;@文字列:ウィンドウタイトルに「文字列」を持つウィンドウを対象にします&br;#数値:ウィンドウハンドルが「数値」のウィンドウを対象にします|
|Argument3|位置原点|Argument2で指定したウィンドウの、どこを原点とするかを、下記の何れかで指定してください。&br;TL:左上隅を原点とします。&br;TR:右上隅を原点とします。&br;BL:左下隅を原点とします。&br;BR:右下隅を原点とします。|
|Argument4|x座標差分|原点からのx座標のずれを記載してください。
|Argument5|y座標差分|原点からのy座標のずれを記載してください。
|Argument6|更新間隔|位置のチェック間隔をミリセコンドで記載してください((一般的には50~100ms程度が良いと思います。数値が小さい程「なめらかに」移動しますが、システムへの負荷も大きくなります))|
|Argument7&br;(optional)|オプション|下記のオプションをスペース区切りで指定してください。複数指定しても、まったく指定しなくてもかまいません。&br;XMOVE:横方向にゴーストを移動可能にします&br;YMOVE:縦方向にゴーストを移動可能にします&br;NOCLIP:見切れ判定を行いません|
|Argument8&br;(optional)|位置取得失敗時指定|Argument2がFIXの場合、対象の矩形取得に失敗した場合、あるいは見切れが発生した場合の位置を指定します。①と②をそれぞれスペース区切りで指定して下さい。指定しなかった場合はDESKTOP CENTERと指定されたものとして扱います。&br;①位置取得失敗時の対象&br;DESKTOP:デスクトップを対象とします。&br;WORKAREA:ワークエリアを対象とします。&br;②位置取得失敗時の仮想矩形&br;CENTER:デスクトップ又はワークエリアのウィンドウをそのまま用います。&br;TOP:対象の矩形の上側に仮想ウィンドウを想定します。&br;LEFT:対象の矩形の左側に仮想ウィンドウを想定します。&br;RIGHT:対象の矩形の右側に仮想ウィンドウを想定します。BOTTOM:対象の矩形の下側に仮想ウィンドウを想定します。|
**(2)位置指定について [#p44f9471]
位置の指定、原点、差分について、下図を参考にしてください。~
黄色はx,y差分が両方0の場合の位置になります。(例:位置原点=TR、x差分=-100、y差分=-20とした場合)
&attachref(,nolink);
**(3)位置取得失敗時・位置固定時の動作について [#i6a7d04a]
以下の場合にはデスクトップかワークエリアを追尾対象とし、Argument8の記載が有効になります。
-追尾対象がFIXの場合
-追尾対象が @文字列 あるいは #数値 で、対象のウィンドウが存在しなかった場合
-追尾対象がACTIVEで、アクティブウィンドウを追尾対象と出来ない場合(原因は色々あります)
-オプションにNOCLIPが指定されておらず、「見切れ」(そのまま追尾すると位置が画面からはみ出すこと)が発生する場合
その際に「代用として」計算される位置と、位置取得失敗時指定の関係については下図を参考にしてください。~
以下の点線の矩形を「仮想的な追尾対象ウィンドウ」として、(2)で示した位置計算を行います((つまり、位置原点がTLもしくはTRの時にTOPを指定するのは ―― 画面からはみ出して見えなくなってしまうため ―― ナンセンスです。))
&attachref(,nolink)
*3.STOP構文 [#m12e73ed]
STOP構文を用いると、DLLの動作を停止できます。以下のパラメータを記載してください。
|Argument|記載内容|説明|h
|Argument0|STOP|大文字文字列で記載|
Argument1以降は記載しても無視されます。
*4.記載例 [#m3554f54]
**(1)HWND取得の記載例 [#b3742697]
本DLLを利用するためには、位置制御対象のHWNDを知る必要があります。一般的には\0もしくは\1のHWNDを指定することになると思います。\0、\1のHWNDは本体からHWNDイベントで通知されます。
以下に里々でのHWND取得コード例を記載します。このコードによりsakurahwnd変数に\0のHWNDが入ります。
#pre{{
*hwnd
$temp (split,(R0),(sprintf,%c,1))
$sakurahwnd (S0)
}}
**(2)「お座り」 [#xdb59afb]
ゴーストをウインドウの右上に「お座り」させるための構文例を記載します。
#pre{{
Argument2:ACTIVE(アクティブウィンドウに「お座り」させる)
Argument3:TR(ウィンドウの右上を原点とする)
Argument4:-20(ウィンドウの右上から20ピクセル左に寄った場所を初期位置とする)
Argument5:-90(ゴーストの「座高」が90ピクセルの場合)
Argument6:100(100[ms]毎に更新)
Argument7:XMOVE(横方向に移動可能、見切れあり)
Argument8:BOTTOM WORKAREA(「お座り」失敗時にはワークエリアの下端に座る)
}}
※Argument2をFIXとすると、つねにワークエリア下端に「お座り」します。
**(3)「ぶら下がり」 [#u264f301]
ゴーストをウインドウの左下に「ぶら下がり」させるための構文例を記載します。
#pre{{
Argument2:ACTIVE(アクティブウィンドウに「ぶら下がり」させる)
Argument3:BL(ウィンドウの左下を原点とする)
Argument4:30(ウィンドウの左下から30ピクセル右に寄った場所を初期位置とする)
Argument5:160(ゴーストの「手から下の高さ」が160ピクセルの場合)
Argument6:100(100[ms]毎に更新)
Argument7:(移動できない、見切れあり)
Argument8:TOP WORKAREA(「ぶら下がり」失敗時にはワークエリアの上端にぶら下がる)
}}
※Argument2をFIXとすると、つねにワークエリア上端に「ぶら下がり」ます。
**(4)総合例 [#n0bd070f]
*5.注意事項・制限事項 [#e4c64af4]
-本DLLを利用した事による一切の損害の責任を負いません。at your own riskでお願いします。
-osuwari.dllを利用したゴーストを複数同時起動した場合の動作は未定です。
-現時点では制御対象とできるウィンドウは1つだけです。\0と\1を同時に制御できません((「りむ・えくすとり~む」では、osuwari.dllをosuwari0.dll、osuwari1.dllとリネームし、\0と\1でそれぞれを利用することによってこの制限を回避されています。思いつきませんでした。))。
-その他異常な動作をする事があるかもしれません。その際はどんな事でも報告頂けると有難いです((それは仕様かもしれませんしバグかもしれません、直せるとも限りませんが))。
*6.更新履歴 [#w15a2256]
-2005/01/23 version2.0.0.0 初版作成
-2006/02/15 version2.0.1.0 最前面に行くロジック変更
--(「りむ・えくすとり~む」でのちらつき対策。他に最前面のウィンドウがあると負けやすくなりましたが)
-2006/02/23 version2.0.2.0 正しく終了できないことがあるバグを修正
**7.謝辞 [#yef78bb9]
開発にあたってはえびさわ様のgethwnd.dllソースを大いに参考にさせて頂き、また勝手ながらだいぶ流用させて頂いております。お礼申し上げます。~
http://www33.tok2.com/home/ebi/index.shtml 「何かぬるめの...」byえびさわ様
osuwari.dllの動作確認その他について、黒羽龍矢様及びTJ様にご協力頂いております。お礼申し上げます。~
http://kurobanetatuya.hp.infoseek.co.jp/genkan.htm 「龍屋」by黒羽龍矢様~
http://seriko.nanika.jp/sstpviewer/ 「SSTP-viewer’s street」by TJ様
里々のコード例の元については殊海夕音様にご協力頂いております。お礼申し上げます。~
http://yune-kotomi.tarenari.jp/ 「雨上がりの青空を探して。」by殊海夕音様
Chameleon Ponapalt様には作成に当たって様々な助言を頂きました。お礼申し上げます。~
http://ssp.shillest.net/ 「SSP (en)BUGTRAQ」by Chameleon Ponapalt様