Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Hiiren klikkaus (vb)

Bill Keltanen [05.02.2004 16:25:54]

#

Miten saisin hiirtä klikattua ohjelman kautta, eli ei fyysisesti? Ja samalla voisitte laittaa hiiren liikutuksen, mutta eri koodissa!

remontti-reiska [05.02.2004 16:31:24]

#

Sub painike_Click ()
Form_Mousedown
End Sub

Hiiren liikutuksen löytää koodivinkeistä, mutta ei erillisenä vinkkinä. Tai ainakin hiirien kordinaattien nimet ja siitä voi sitten muutella. Form_mousedown :iin pitää pistää jotain.

Antti Laaksonen [05.02.2004 20:18:36]

#

API-kutsuja tarvitaan. Sekä hiiren paikan vaihtaminen että napsauttaminen (ja myös pari muuta juttua) onnistuu mouse_event-aliohjelmalla. Tässä esimerkki:

Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)

Private Const MOUSEEVENTF_ABSOLUTE = &H8000
Private Const MOUSEEVENTF_MOVE = &H1
Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4

Private Sub Form_Activate()
    'siirretään hiiri kohtaan (200, 300)
    x = 200 * 65536 / (Screen.Width / Screen.TwipsPerPixelX)
    y = 300 * 65536 / (Screen.Height / Screen.TwipsPerPixelY)
    mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_MOVE, x, y, 0, 0

    'jäljitellään hiiren napsautusta
    mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
    DoEvents
    mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub

Helppo keino pelkästään liikuttaa hiirtä on käyttää SetCursorPos-funktiota.

Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long

Private Sub Form_Activate()
    'siirretään hiiri kohtaan (200, 300)
    SetCursorPos 200, 300
End Sub

Lisää tietoa:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/mouseinput/mouseinputreference/mouseinputfunctions/mouse_event.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/Resources/Cursors/CursorReference/CursorFunctions/SetCursorPos.asp

Bill Keltanen [06.02.2004 08:10:48]

#

Kiitos paljon

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta