BBCmd 0.1.2 has been released.
BBCmd 0.1.2a をリリースしました。mouse_move コマンドを追加。マウスカーソルを指定位置 / 方向へ移動させます。
ホイールの方は使い道が思いつかないので要望があるまで放置します。マウス絡みではさらに mouse_click とか考えられるけれど、やっぱり使い道が思いつかないので放置。
BBCmd: Modified focus command. It works well now. Note that I replaced the archive of version 0.1.1 by new one. Please redownload if you got it before today.
focus コマンドのアレなところを修正しました。以前リリースした 0.1.1 のアーカイブは修正したものに置き換えましたので、以前ダウンロードした方はもう一度ダウンロードして下さい。
BBMediator 0.0.0a をリリースしました。
テスト版。思いっ切り大雑把。
予め指定しておいたものに該当するメッセージを BB4W 本体が受け取った際に何かする、というもの。書いてて何の役に立つんだと思いましたが。このバージョンで可能な範囲で思い当たる用途といえば、せいぜい BBSoundFX の代替くらいか。
後々各パラメータを文字列として比較できるようにする予定。これができたら……できたで何が楽しいんだろうな。
解らない人用に説明しておくと、Windows アプリケーションは基本的にイベントドリブン (アレが起きたらコレをする、という形式) となっています。マウスが動かされたとか、キーが押されたとか、そういったイベントが起きると適切なウィンドウにそのことが伝えられます。イベントはユーザーの入力と関連付けられている必要はないので、例えば「@BBShowPlugins という bro@m を送る」とか「reconfigure する」といった命令をイベントと見なすこともできます。BB4W は一部の機能がイベントを通して利用できるようになっています。BBMediator はこれを利用して、BB4W が処理しようとしている / 処理したイベントを調べ、もし設定に該当するものがあれば対応するコマンドを実行します。
(以下略)
struct {int num; entry** entries;} table;
void
init(void)
{
table->num = 0;
table->entries = NULL;
/*
今は放置プレイ。後から追加すること。
*/
return;
}
void
exec(int cond_a, int cond_b, int cond_c)
{
entry** cum;
for ( cum = table->entries + (table->num - 1);
table->entries <= cum;
cum-- )
{
if (cond_a != (*cum)->cond_a) continue;
if (cond_b != (*cum)->cond_b) continue;
if (cond_c != (*cum)->cond_c) continue;
abracadabra(*cum);
break;
}
}実行すると即落ちる。何故かと思ったら cum は table->entries - 1 を、この場合負の方向にオーバーフローした妙なアドレスを指していた。で、for の継続条件が真なのでループの中身が実行され、cum 経由で変な場所を参照して落ちた。妙なことしないで素直に添字回した方がいいという話。
BB8Ball 1.0 がリリースされました。
Eight ball はビリヤードで 8 と書かれた黒いボールだとは解りますが、それにどういう意味があるのか知らないので何が面白いのかさっぱりです。
bbColor3dc がリリースされました。3DCC のカラースキーマを用い、スタイルの変更に応じて各種配色を変更するプラグインです。
用いられるスキーマは、
という名前のファイルで、
から検索されます。
単に 3DCC の Apply.exe に渡すと確認のダイアログが出るよな、と思ってソースコード見てみたら、.3dc の中身を解析して SetSysColor で配色を変更してました。まあ、あれは数値並べただけですから、使う API が何かさえ解ればどうってことない話ですね。
スタイルに直接あれこれするよりも遥かにスマートなのでこちらを推奨。いやまあ、あれは冗談ですけどね。
BBCmd 0.1.1 をリリースしました。
focus コマンドを追加。focus('window_class') とすると、window_class に該当するウィンドウにフォーカスを移します。focus('class', 'title') とすることでウィンドウのタイトルを指定することもできます。activate という名前でも利用可能。
対抗: 某か入力しようとする際にいちいちマウスを操作してアクティブにしなければならない BBZCmdEx などのプラグイン限定
ただ、BBZCmdEx は独自のウィンドウクラスを作らずに Edit コントロールをそのまま用いているため、focus で指定しようにも困るという話。一応 focus('Edit') とすれば引っ張れるのですが、時と場合によっては動かないと思います。
後、最小化しているウィンドウと相性が悪い気がする。多分何か上手い方法があると思うけど疲れてるので続きは次回。
Windows XP における welcome screen 問題 (「ようこそ」画面でしたっけ。あれを使ってると BB4W をデフォルトシェルにした際、かなり起動が遅くなるという問題) が解決されたようです。他にもマルチモニター環境や、mouse focus model の auto raise と sloppy focus 周りの修正が含まれているようです。