|
■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
|