C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: マウスカーソルの移動


(過去ログ 107 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■63905 / inTopicNo.1)  マウスカーソルの移動
  
□投稿者/ ORION (1回)-(2012/10/26(Fri) 12:47:31)

分類:[VB.NET/VB2005 以降] 

2012/10/26(Fri) 13:13:30 編集(投稿者)

Visual basic2008です。

プログラムが一定時間操作されない状態(マウス操作やキー操作)が続くと
特定の位置にマウスカーソルを移動したいのですが、
どうすれば実現できるのでしょうか?

よろしくお願いします!!
引用返信 編集キー/
■63906 / inTopicNo.2)  Re[1]: マウスカーソルの移動
□投稿者/ 魔界の仮面弁士 (73回)-(2012/10/26(Fri) 13:17:51)
No63905 (ORION さん) に返信
> フォーム上で、最後にマウスカーソルを動かしてから1分後に、特定の場所にマウスカーソルを自動で移動するようにしたいのですが、

単純な実装だと、こんな感じでしょうか。

Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove
  Timer1.Stop()
  Timer1.Interval = 60000 '1分後
  Timer1.Start()
End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
  Timer1.Stop()
  Cursor.Position = New Point(200, 100) 'カーソル移動
End Sub


フォーム上に他のコントロールが貼られていないという前提にはなりますが、
フォーム上のみの動作を追うのなら、Form の MouseMove イベントで良いでしょう。

フォーム外のマウス動作も拾いたい場合には、DirectInput で移動通知を拾う方法や、
あるいは、タイマーで定期的にマウスの座標を監視する方法などが考えられます。

Public Class Form1

  Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
    '55ミリ秒間隔でカーソル位置監視
    Timer1.Interval = 55
    Timer1.Start()
  End Sub

  Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    'カーソル位置が変わっていたら、1分間計測
    Dim p As Point = Cursor.Position
    If cur <> p Then
      cur = p
      Timer2.Stop()
      Timer2.Interval = 60000 '1分
      Timer2.Start()
    End If
  End Sub
  Private cur As Point = Point.Empty

  Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
    '1分経ったので、カーソルを移動
    Timer2.Stop()
    Cursor.Position = New Point(200, 100)
  End Sub

End Class
引用返信 編集キー/
■63907 / inTopicNo.3)  Re[2]: マウスカーソルの移動
□投稿者/ ORION (2回)-(2012/10/26(Fri) 15:32:37)
早速のありがとうございます。
出来ました、感激です!!

カーソルを監視する必要があるのですね。


又機会がありましたらよろしくお願いします!!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -