スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 強調表示も入れてみる? | トップページ | 一見、地味なソフトだが »

仕様は大体固まった

今は、Mirror-DTC/AmuseGraphics用の追加提供ソフトとして、Mouseクリック エフェクターを作っているのだが、今日の時点で仕様は大体固まった。後は、仕上げ作業をして動作確認すればリリースできるのだが、カスタマイズ機能が豊富なので動作確認は大変かもしれない。

今回開発しているMouseクリックエフェクターは、これ単独で多くのダウンロード数を稼げる様な人気ソフトにするつもりで開発している訳では無い。

なので、同様の機能を持つ他ソフトに対して優位性を示せる様な奇をてらった特別な機能は持たせていないのだが、その分、カスタマイズ機能は豊富に持たせている。

具体的には、クリック時に発生するデフォルトアニメーションは、円を描くだけの波紋アニメーションになるのだが、その色だとかペン幅だとか最大サイズだとか表示期間だとかフェードアウト時間は指定可能にしてある訳だ。

もっとも、そういった指定は、ここの所、作者的には好んで使用しているiniファイルで行う事になっているので、動作中に設定を変更する事は出来ない。

まあ、機能的には、同様の設定が可能な設定ダイアログを用意しておけば、動作中の設定変更も可能には出来るのだが、このソフトの用途としては、プレゼンテーション時にマウス操作を可視化する事にある訳だ。

なので、このソフト自体は脇役になる訳なので、プレゼンテーション作業中に、このソフトの設定を変更する、なんてシチュエーションは考えづらい訳だ。

と、いう事で、このソフトに関しては、動作中に設定変更する事は、基本的には、考慮していないのだが、昨日書いた強調表示機能については、プレゼンテーション中に強調表示を行ったり、行わなかったりするケースは想定できるので、動作中の設定変更を可能にしている。

また、このソフトでは、クリックエフェクト以外に、通常時にも、マウスカーソルを目立たせる事が出来る様に、その周辺に画像表示を行える機能も搭載しているのだが、この機能をOnにしたままだと、目立ち過ぎてウザい場合もある。

なので、この機能についても、動作中にOn/Off可能にする事にしているのだが、これらの設定変更操作は、このソフトのダイアログ上で行える様にしてあるのだが、それだけだと、やはり、プレゼンテーション中に、このソフトのダイアログを操作する必要が生じるので、あまり望ましくもない訳だ。

このため、これらの操作にはショートカットキーを割り当て、設定変更は、キーボード操作でも行える様にしようとしている。

と、いう事で、今回開発しているMouseクリックエフェクターには、デフォルト設定では、昨日とりあげた同カテゴリのソフトである所のBombClickの様な、華やかな見かけはないのだが、カスタマイズ機能は豊富で、その気になれば、表示する画像や音声はアニメーションgifファイルやwavファイルで置き換える事も出来る。

つまり、その気になれば、BombClick並の派手な効果を持たせる事も可能ではある訳だ。

もっとも、作者的には、2007年の暮には、やはり、豊富なカスタマイズ機能を持たせた上で、MasterReversiをリリースした訳なのだが、少なくとも、そのカスタマイズ機能を真面目に使った独自のリバーシ盤面やプレイヤー画像が第三者から公開される事は無かったし、このカスタマイズ機能が褒めたたえられる事も無かった訳だ。

まあ、MasterReversiというソフトは、その主役はリバーシエンジンになる訳なので、画面描画系のカスタマイズ機能が注目されなかったのは致し方なかったのかもしれないのだが。

ちなみに、数日前に書いていた、マウスボタンの監視方式は、Hookを使う形式からポーリング形式に変更した。

何故、数日前には、小馬鹿にしていたにも関わらず、Hook方式をヤメてポーリング方式に切り替えたのか、というと、BombClickを使ってみていると、今回開発しているMouseクリックエフェクターで認識できないマウスクリックをBombClickでは認識できる場合がある事に気が付いたからだ。

具体的には、Hook方式でクリックを検出していると、タスクマネージャーを起動し、それを操作している状況では、マウスイベントが検出出来なかった訳だ。

その理由は、権限の問題で、タスクマネージャーは管理者権限のソフトになるのだが、通常、Mouseクリックエフェクターはユーザー権限で動作させるので、管理者権限で動作しているアプリのイベントを横取りする事は出来ない訳だ。

上記の様になっている理由は、Hookでは、状態を監視するだけではなく、その気になれば、そのイベントを完全に横取りする事も可能になるからだ。

つまり、何の制限も加えないと、ユーザー権限のソフトが管理者権限のソフトの動作を阻害可能になってしまう訳なので、Windows的には、ユーザー権限で起動されたソフトがHookしても、管理者権限のソフト用のイベントは横取り出来ない様にしている訳だ。

なので、Hook方式を採用する場合にも、Mouseクリックエフェクターを管理者権限で起動すれば、タスクマネージャーへのイベントも横取り可能になるのだが、BombClickの場合、普通にユーザー権限で起動しても、タスクマネージャーに対するマウスクリックも検出できた訳だ。

と、いう事で、今回の場合、必要になるのはマウス状態の監視だけで、Mirror-DTCの様に、イベントを完全に横取りして、本来、それを受け取る筈のウインドウに渡さない、なんて事をする必要はないので、マウスクリックの監視方式はポーリング形式に変更する事にした。

ポーリング方式の場合、数えきれないくらい、無駄に、マウスボタンの状態を問い合わせるAPIコールを行う必要が生じるのだが、今時のCPUは高性能なので、元々、画像アニメーション用に持たせていた16mSec毎のタイマー処理ルーチン内で毎回ポーリングさせても、CPU使用率が目に見えて増える事は無かった。

と、いう事なので、監視方式は、Hook方式からポーリング方式に切り替えたのだが、ポーリング方式のもう一つの問題として、マウスクリック時にボタンを押されている時間がポーリング間隔よりも短いと、クリックを検出できない、というものもある。

しかし、試してみた所では、ポーリング間隔が16mSecなら、この点についても問題は無さそうだったので、変更する事にした訳だ。

« 強調表示も入れてみる? | トップページ | 一見、地味なソフトだが »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/67166567

この記事へのトラックバック一覧です: 仕様は大体固まった:

« 強調表示も入れてみる? | トップページ | 一見、地味なソフトだが »

2018年11月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。

    ポリシーと規約 - Google