BattenX Ver1.12リリース

2010年 05月 07 日 15:05:07

変更:ユーザ登録情報の保管場所をレジストリからファイルへ変更
修正:クリックしただけでドラッグを伴うマウスジェスチャーが効いてしまう問題を修正

BX112setup.exe ‎更新日時 2010‎年‎5‎月‎7‎日、‏‎14:25:28
Total size: 315660bytes
CRC (0xA627C7A3)

ダウンロードは左側のリンクをクリックしてください


申し訳ないのですが、既に正規ユーザ登録された方は今回のバージョンをインストールすると、もう一度設定ダイアログで認証する必要があります事をご了承下さい。
認証情報はレジストリに記憶しているとWindowsのバグやバグFIXに振り回されるので今回のバージョンからファイルに記憶するようにしました。レジストリもファイルと言えばファイルなんですけど。

認証問題で何度も手こずらせている真の原因はWin32アプリとWin64アプリでAPIの挙動が違っている事にあります。BattenXは両者を1つのレジストリにアクセスしようとしていましたが、64bitWindows上のWin32アプリだと勝手に参照先を変えられてしまうのです。

実はファイルでも同じようなことが起こりました。Windowsのシステムディレクトリにファイルを作るとWin64アプリはアクセスできなくてWin32アプリは大丈夫なのです。おまけにエクスプローラでそのファイルを見ることはできませんでした。隠しファイルでもないのに。他のファイラーを使うと存在しているのは明らかなのですが。

regeditでも同じようにBattenXの認証情報が存在しているのに表示しなくなってしまいました。あえてそうしているのかバグなのか不明ですが、私にはセキュリティポリシーがMicrosoft社内で統一がとれてないように見受けられます。
 とにかくAPIの挙動に信頼性がないというのは非常に問題のあることで、昔からあるAPIがセキュリティ強化のため、フックを入れたかのように挙動を勝手に変えてしまうのはOSそのものの信頼性を損なう行為のように感じます。

Windows7はプログラマから見たら非常に制限されたOSになってしまいました。Vistaからそうなのでしょうが。

「クリックしただけでドラッグを伴うマウスジェスチャーが効いてしまう問題を修正」というのは、具体的にはadobe readerで表示倍率を変更する逆三角形のボタンをクリックすると、前バージョンではマウス左ボタンを押したら下へドラッグしたときのマウスジェスチャーが働いてしまうのです。他にもWindows 7付属のペイントでブラシや選択を変えるボタンを押すと同じような症状が出ます。

 これはマウスボタンを押したときのウィンドウとマウスボタンを離したときのウィンドウハンドルが違っている事から発生したバグです。通常は押したときと離したときのウィンドウは同じ物を指していますが、不具合の起こるボタンを押すと違っているのです。
 恥ずかしながら、このバグがわかるまでマウスボタンメッセージに付いてくるマウスのカーソル座標がクライアント座標とは知りませんでした。だから押したときと離したときの座標差が実際には全く無いにもかかわらずマウスジェスチャーとして認識されてしまったのです。
 しかしクライアント座標をスクリーン座標に変換してもバグは直りませんでした。Windowsのメッセージも信用できないのです。仕方ないのでマウスボタンメッセージを受信したら直接マウスカーソル座標をAPIから取得することにしました。しかし悔しいかな、まだこれは完璧ではないようです。また同じ症状を一回遭遇してしまいました。




« 前のページ - 次のページ »
---------------------------------------------