ヨン様と呼ばないで!

アクセスカウンタ

zoom RSS ChatteringCancelerバージョンUP経過1

<<   作成日時 : 2009/10/31 22:48   >>

ブログ気持玉 0 / トラックバック 3 / コメント 0

ChatteringCanceler2.0 開発順調!

と行くほど世の中甘くありませんでした・・・。
以下、トラブルの備忘録。
クラス化に伴う移植バグは除いてます。

・Xボタン1/2(いわゆる「戻る」「進む」ボタン)のイベントをフックしない
 正確には、フックしてないのではなくてフックしてるのにイベント判別が誤っていました。

 MSG *msg = (MSG *)lParam;
 MSLLHOOKSTRUCT *mlhs = (MSLLHOOKSTRUCT *)lParam;

 switch(wParam)
 {
  他の処理
 case WM_XBUTTONUP:
 case WM_XBUTTONDOWN:
  switch(HIWORD(mlhs->mouseData))
  {
  case XBUTTON1:
   Xボタン1の処理;
   break;
  case XBUTTON2:
   Xボタン2の処理;
   break;
  }
  他の処理
 }

 変更部分は赤字にしました。違いがお分かりでしょーか。
 WM_XBUTTONUP および WM_XBUTTONDOWN でボタンを判別するためには、MOUSEHOOKSTRUCT のmouseData を参照する必要があるわけですが、ただ参照するとダメで、上位ワードを参照しなければならないということです。

・Xボタン1/2のイベントを発生しても、フックプロシジャでメッセージをフック出来ない
 結果から言えば、Xボタン1/2のイベントを発生させてる「つもり」でした。

 問題のコード(抜粋)

 MSLLHOOKSTRUCT *mlhs = (MSLLHOOKSTRUCT *)lParam;
 INPUT ipSendEvent;

 ipSendEvent.mi.mouseData = mlhs->mouseData;

 修正後のコード

 MSLLHOOKSTRUCT *mlhs = (MSLLHOOKSTRUCT *)lParam;
 INPUT ipSendEvent;

 ipSendEvent.mi.mouseData = XBUTTON1;

 先ほどの件では、Xボタン1/2の判別は上位ワードに格納されているという点が罠でした。
 ところが、SendInputのパラメタでは普通に XBUTTON1 または XBUTTON2 を設定すれば良かったのです。
 MSDNのMOUSEINPUT構造体についての説明を、しっかり読んでいれば気付けたはずでした。

 MOUSEINPUT構造体の解説(MSDN)

 正しいパラメタを設定することで、WH_MOUSE_LL のフックプロシジャで正しくメッセージをフックできるようになりました。


そんなこんなで、どうやらフックDLLのおおまかなところは完成したようです。
一応もう少しメソッドの整理は必要ですが、ロジック的にはおおむね終わりです。
で、残るは設定画面なのですが・・・これがまた・・・ねえ。
画面関係すんげえ苦手なんですよ!!
センスがないというか。
次回の経過報告では、画面レイアウトが出来ているといいなと思う所存。


2009/11/2
画面レイアウトが決まったっぽいです。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(3件)

タイトル (本文) ブログ名/日時
ChatteringCancelerバージョンUP検討開始
えー長らく放置していたChatteringCancelerですが、そろそろ開発を再開します。 で、追加機能としては ...続きを見る
ヨン様と呼ばないで!
2009/10/31 22:51
ChatteringCancelerバージョンUP経過2
画面レイアウトをしこしこ作ってみました。 2.0ではこんな設定画面になりそうです。 ...続きを見る
ヨン様と呼ばないで!
2009/11/02 22:44
ChatteringCanceler2.0b1リリース
お待たせしました。 ようやく開発作業が一段落しましたので、2.0をβリリースします。 ...続きを見る
ヨン様と呼ばないで!
2009/11/04 23:48

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
URL(任意)
本 文
ChatteringCancelerバージョンUP経過1 ヨン様と呼ばないで!/BIGLOBEウェブリブログ
文字サイズ:       閉じる