スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

画像によってマウスを制御するプログラム

とりあえず、マウスをカメラから制御しようという企みの途中報告です。


手袋なりなんなりで指先に色を付けるプランは変わってませんが(色使った方がだいぶ簡単になるからですね)
親指に付けた色をベースカラーとし、マウスの移動やクリック判断の始点とすることにしました。

クリック判断の始点というのは、親指から他の指に付いているカラーポインタがある一定距離以上離れたらクリックもしくは右クリックとしているため始点と言ってます。

うん、非常にシンプルな内容ですね。

マウスをコントロールするためのAPIの使い方を以下にメモしておきます。
SendInput関係はあんまり情報が無いから探すの大変でしたし…。
 参考文献はこちらこちらです。

簡単に使おうと思えば以下の2行で使用できます

INPUT mouse_input[] = {{INPUT_MOUSE,1,2,0,MOUSEEVENTF_MOVE,0,0}};
::SendInput(1, mouse_input, sizeof(INPUT));


説明はまず、mouse_inputに与える引数ですが、

INPUT_MOUSEはマウスをコントロールしたい場合に選択します
キーボードのときはINPUT_KEYBOARDを選択します。

次の 1 はxの移動量(dwFlagsにより絶対座標か相対座標かを決定)
次の 2 はyの移動量(dwFlagsにより絶対座標か相対座標かを決定)
次の 3 はマウスホイールの移動量(dwFlags = MOUSEEVENTF_WHEEL の時のみ有効)
MOUSEEVENTF_MOVEはマウスの動作を選択します。他には以下の動作があります。
  const int MOUSEEVENTF_MOVED = 0x0001 ; // 移動
  const int MOUSEEVENTF_LEFTDOWN = 0x0002 ; // 左ボタン Down
  const int MOUSEEVENTF_LEFTUP = 0x0004 ; // 左ボタン Up
  const int MOUSEEVENTF_RIGHTDOWN = 0x0008 ; // 右ボタン Down
  const int MOUSEEVENTF_RIGHTUP = 0x0010 ; // 右ボタン Up
  const int MOUSEEVENTF_MIDDLEDOWN = 0x0020 ; // 中ボタン Down
  const int MOUSEEVENTF_MIDDLEUP = 0x0040 ; // 中ボタン Up
  const int MOUSEEVENTF_WHEEL = 0x0080 ; // ホイール動作
  const int MOUSEEVENTF_XDOWN = 0x0100 ;
  const int MOUSEEVENTF_XUP = 0x0200 ;
  const int MOUSEEVENTF_ABSOLUTE = 0x8000 ; // 絶対座標

最後二つはタイムスタンプと32ビットの追加情報らしいのですがよくわかりません。
以下にMOUSEINPUTの中の構造体の構造を書いておきます。

typedef struct tagMOUSEINPUT {
LONG dx; // マウスの絶対/相対座標(dwFlags で変化)
LONG dy;
DWORD mouseData; // ホイールの移動(dwFlags = MOUSEEVENTF_WHEEL の時)
DWORD dwFlags; // マウスの動作を指定するフラグ
DWORD time; // タイムスタンプ。単位は ms (詳細不明)
ULONG_PTR dwExtraInfo; // 32 ビットの追加情報
} MOUSEINPUT, *PMOUSEINPUT;
スポンサーサイト

コメントの投稿

非公開コメント

なかのひと        
amazon        
アニソンYoutubeメドレー


presented by アニソン名曲.com

検索フォーム
カウンター
プロフィール

風草

Author:風草
なんだかんだで大学院に進学した人でございます。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。