エフェクターを作っているのだが、今日は、作者製の既存ソフトから持ってきた処理コードを組み合わせて、主要処理が動作する様にした。今日の時点でマウスを監視したエフェクトは出来る。エフェクターの主要処理というのは、マウスのクリック状況の監視と、クリックされたら、マウスポインター周辺に描画を行う、という処理になる筈だ。OSのAPI的には、マウスボタンのOn/Off状態をチェックする関数もあった筈なのだが、そういうAPIを使う事を前提にすると、常時、マウスボタンの状態をチェックし続けないといけなくなる。普通は、もっと効率的な方法は無いモノか、と、考える筈なのだが、Windowsプログラミングを少しカジッただけの初心者的には、マウスのクリックイベントはLButtonDownだとかUPだとかのWindowsのメッセージで送られてくるから、そのメッセージ処理関数を作成すれば、マウスのクリック状態はイベントとして把握可能だ、と、思うかもしれない。実際の所、上記の様なメッセージはウインドウに対して送られてくるモノなので、自分が表示しているウインドウだとかダイアログ以外のウインドウやダイアログに対してクリックが発生しても、メッセージは飛んでこない。エフェクターでは、そんなメッセージを監視用に使う事は出来ない。Windowsプログラミングを少しカジッただけの初心者的には、結局、PC全体のマウスのクリック状態を監視したければ、前述のAPIを使って高速なポーリングを行うしかない、と、結論付けるかもしれないのだが、Windowsには、Hookという文化もある訳だ。クライアントでは、長らく、このHookという文化を利用して、OSのシステム上で発生したキーボードイベントを横取りして、その内容を通常の使われ方ではなく、サーバーへのキー送信用に利用する、という処理を行ってきた訳だ。Ver1.4.0のDTCServiceでは、サーバーのローカル環境でのキーボード/マウス入力を無効化できるオプションを追加したのだが、このオプション機能を実現するにあたっては、前述のキーボード入力に加え、マウス入力に対するHookも利用した。OSのシステム上で発生したマウスイベントも横取りして、本来、そのイベントが発生したメッセージを貰う筈のウインドウにそのメッセージが届かない様にする事で、マウス操作を出来なくした訳だ。クリックエフェクターでのマウス監視には、このコードを使っている。マウスの状態を監視する為に、前述の様な、普通は、1コア分のCPU性能を消費してしまう事を覚悟しなければならない様なポーリング処理は必要ない。エフェクターで、次に問題になるのは、普通のウインドウでは、マウスポインター周辺に波紋等のアニメーション表示を行う事は出来ない、という事になる。Windowsでのウインドウというのは、必ず四角形でなければならないし、普通はタイトルバーだとかメニューバーなんかも存在している訳だ。エフェクターに期待される様な描画は行えない訳なのだが、作者的には、AG-デスクトップレコーダーなんかでも、画面上に、録画領域指定用の枠を描いたりしている。エフェクターでは、こういったウインドウの作成用のコードも他プログラムから流用してきている訳だ。エフェクターの開発も容易だった訳だ。エフェクターの基本処理を作るにあたっては、何ら苦労していないので、もう少し、面白いモノにしようか、と、思ったりもしている訳だ。具体的には、クリックされた場合のアニメーション描画には、ユーザーが作成するアニメーションgifファイルも指定可能にし、クリック時にはアニメーション描画以外に音声も再生出来る様にしつつ、その音声にもユーザーが作成するWavファイルを指定可能にしようか、としている。今日の時点で、既に、デフォルトアニメーションと音声再生以外に、アニメーションgifファイルを使ったアニメーション表示と、Wavファイルを使った音声再生、も、可能になっているので、後は、これらの指定方法をどうするか、という段階になっている。エフェクターについても、大体の形は出来上がっているかもしれない。Adsense)サービスを利用しています。使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。パートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。