マウスカーソルの位置を変更する          <TOP>


マウスカーソルの位置を変更します。

SetCursorPos マウスカーソルの位置を設定

Sleep 指定時間処理を停止

 

マウスカーソルを白い円に沿って移動させています。背景によりカーソルが見えにくいことがあるのでフォーム上に同期した(?)円を描いています。

 

'================================================================
'= マウスカーソルの位置を変更する
'=    (SetCursorPos.bas)
'================================================================
#include "Windows.bi"

' マウスカーソルの位置を変更する
Declare Function Api_SetCursorPos& Lib "user32" Alias "SetCursorPos" (ByVal x&, ByVal y&)

' 指定した時間、処理を停止
Declare Sub Api_Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds&)

Var Shared Button1 As Object

Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

ShowWindow -1
Cls

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var MiddleX(1) As Long
    Var MiddleY(1) As Long
    Var Radius(1) As Long
    Var TX(1) As Long
    Var TY(1) As Long
    Var Grad As Long
    Var Ret As Long

    Cls

    Do
        MiddleX(0) = GetDeviceCaps(8) / 2
        MiddleY(0) = GetDeviceCaps(10) / 2
        MiddleX(1) = GetWidth / 2
        MiddleY(1) = GetHeight / 2
        Radius(0) = MiddleY(0) / 2
        Radius(1) = MiddleY(1) / 2
        
        Grad = Grad + 1
        TX(0) = MiddleX(0) + Cos((Grad / 360) * 2 * 3.141) * Radius(0)
        TY(0) = MiddleY(0) + Sin((Grad / 360) * 2 * 3.141) * Radius(0)
        TX(1) = MiddleX(1) + Cos((Grad / 360) * 2 * 3.141) * Radius(1)
        TY(1) = MiddleY(1) + Sin((Grad / 360) * 2 * 3.141) * Radius(1)

        Api_Sleep 5
        CallEvent

        Ret = Api_SetCursorPos(TX(0), TY(0))
        SetDrawWidth 3
        Pset(TX(1), TY(1) - 16), Int(Rnd(1) * 15)
    Loop Until Grad > 360
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End