Ayuda MousePointer

Iniciado por Maik33, 15 Junio 2010, 09:44 AM

0 Miembros y 1 Visitante están viendo este tema.

Maik33

Hola,

Yo quisiera saber si se puede saber el nombre del puntero del raton actual, por ejemplo
cuando pongo el raton encima de una cara de estas( :D ) sale una mano, o cuando sale el raton cargando. Pues cuando cambie de estado que me diga como se llama o el numero de referencia o algo.
Se puede?

Lo que he probado a sido un timer que cuando cambie de estado haga lo siguiente:

Código (vb) [Seleccionar]
Text1.Text = Text1.Text & Screen.MousePointer & vbNewLine

pero solo me escribia algo cuando cambiaba el puntero del form mio.

Gracias.

Maik33

Bueno ya encontre algo, pa quien le interese


Código (vb) [Seleccionar]

Private Declare Function GetCursor Lib "user32" () As Long

Dim c1 As Long, c2 As Long

Private Sub Form_Load()
      c1 = GetCursor
      Timer1.Interval = 1
End Sub

Private Sub Timer1_Timer()
      c2 = GetCursor
      If c2 <> c1 Then
            c1 = c2
            Me.Print c1
      End If
End Sub

BlackZeroX

Es mejor subclasificar al Form en lugar de usar un Timer!¡... Bueno es lo que yo haria!¡.

Dulce Infierno Lunar!¡.
The Dark Shadow is my passion.

Maik33

#3
que quieres decir con subclasificar? me pones un ejemplo?

Aparte de esas preguntas me salio un problema, solo funciona cuando cambia dentro del form o en donde el diseño de visual basic, en este foro por ejemplo no funciona, alguna idea?

LeandroA

GetCursor es solo valido para la instancia para el cursor en general usa GetCursorInfo, en este caso no te serviria de nada subclasificar quizas hooks sea lo mas apropiado.


Option Explicit
Private Declare Function GetCursorInfo Lib "user32.dll" (ByRef pci As PCURSORINFO) As Long

Private Type POINTAPI
    x               As Long
    y               As Long
End Type

Private Type PCURSORINFO
    cbSize          As Long
    flags           As Long
    hCursor         As Long
    ptScreenPos     As POINTAPI
End Type


Dim CI As PCURSORINFO
Dim hMemCursor As Long


Private Sub Form_Load()
    CI.cbSize = Len(CI)
    GetCursorInfo CI
    hMemCursor = CI.hCursor
   
    Timer1.Interval = 10
End Sub

Private Sub Timer1_Timer()
    CI.cbSize = Len(CI)
    GetCursorInfo CI
       
    If hMemCursor <> CI.hCursor Then
          hMemCursor = CI.hCursor
          Me.Print hMemCursor
    End If
End Sub



Maik33

Muchas gracias funciona :D, una duda, lo del tipo pointapi x & y no hace falta no? eso se una para GetCursorPos no?
Otra ves muxas gracias