DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ウィンドウ外のマウスの動き

環境/言語:[Vista,Visual C# 2008 Express Edition]
分類:[.NET]

初心者な上に、しばらくぶりにC#をいじっていて、難儀してます。

個人的な調査で、パソコンの日常的な使用下でのマウスの平均移動速度を調べたく、そのためのプログラムを書こうとしています。 ですが、MouseMoveではウィンドウを出てしまうと追えないようですし、キャプチャもMouseUpまでのよう。スクリーン全体でのマウスの動きを知るにはどうしたら...と、思って検索すると、どうやらグローバルフックということをすればいいのではないか..(http://hiragino.blog74.fc2.com/blog-entry-18.html , http://hongliang.seesaa.net/article/7651626.html)というとこまでわかったのですが、これを具体的にどうやるのかわからずお手上げ状態です。 (Express Editionでは、コンポーネントは使えない?)

グローバルフックにこだわらずとも、ウィンドウ外を含むマウスの動きが記録できればいいのですが、どうしたらいいと思われますか? よろしくお願いします<m(__)m>
■No22186に返信(kiddさんの記事)
> グローバルフックにこだわらずとも、ウィンドウ外を含むマウスの動きが記録できればいいのですが、どうしたらいいと思われますか? 

こんにちは。Form1にて、Timer1を設定しておけば
Form1の外にあっても、Cursor.Positionは取得できます。C#でも同様と思うのですが

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim Pos As Point = Windows.Forms.Cursor.Position
        Me.Label1.Text = Pos.ToString
    End Sub
参考になれば幸いです
■No22186に返信(kiddさんの記事)
> ウィンドウ外を含むマウスの動き

そういう目的であれば、DirectInput で取得できるかも知れません。

C# から利用した事はないのですが、VB6 から利用した時は、DirectInput を
使って、マウスやキーボードの操作を得ることができていました。
あー、なるほど。
たしかに、Cursor.PositionでマウスのPointを得られました。
MouseMoveイベントは使えないだけで、Cursorから得られるんですね。早とちりして、勘違いしてました。
本当に助かりました。ありがとうございます。

DirectInputの方は、今回は使わなくてすみそうですが、こちらでも簡単にいけそうです。
一応、参考になりそうなurlをおいておきます。
http://sorceryforce.com/programing/mdx/directinput/mouse.html

お二方ともありがとうございました<m(__)m> お世話になりました!
解決済みにするのを忘れてました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板