Bueno en este programa quiero que al que me cambien el cursor al mousehand ( es la manita) fuera de el form me detecte que se ah cambiado esto ya lo eh echo desde C# pero no es lo mismo eh intentado con este codigo:
If System.Windows.Forms.Cursor.Current = Cursors.Hand Then
label1.text = "Se ah detectado el mouse hand"
timer3.start()
End If
Hola. Primero que nada, esto no es Visual Basic, es Visual Basic.NET, las dudas sobre lenguajes de la plataforma .NET debes publicarlas aquí.
La Class
System.Windows.Forms.Cursor representa al cursor
de la aplicación, no del sistema. Si quieres, muestra el código original en C# e indica lo que no te ves capaz de traducir, para poder ayudarte con eso.
De todas formas, para determinar el tipo de cursor actual del sistema, puedes utilizar la función Win32
GetCursorInfo pasándole por referencia una estructura Win32
CursorInfo, y entonces
GetCursorInfo asignará un handle/identificador
reservado (inmutable) en el miembro
CursorInfo.hCursor, ese handle hace referencia al tipo de cursor del sistema, por ejemplo el handle
65567 equivale al cursor "Hand", la manita como tu dices.
Esto que voy a mostrarte lo he sacado de mi API gratuita
ElektroKit, la cual puedes utilizar para multitud de propósitos diferentes:
(http://i.imgur.com/DRKjghj.png) (https://github.com/ElektroStudios/ElektroKit/tree/master/Solution)
- CursorInfo Structure - ElektroKit (https://github.com/ElektroStudios/ElektroKit/blob/12f1ff734193945286b00b3abf605a1b89fea648/Solution/Elektro.Interop/Win32/Types/CursorInfo.vb)
- CursorInfoFlags Enum - ElektroKit (https://github.com/ElektroStudios/ElektroKit/blob/12f1ff734193945286b00b3abf605a1b89fea648/Solution/Elektro.Interop/Win32/Enums/CursorInfoFlags.vb)
- GetCursorInfo Function - ElektroKit (https://github.com/ElektroStudios/ElektroKit/blob/12f1ff734193945286b00b3abf605a1b89fea648/Solution/Elektro.Interop/Win32/NativeMethods/NativeMethods_User32.vb)
<SuppressUnmanagedCodeSecurity>
<DllImport("User32.dll", SetLastError:=True)>
Public Shared Function GetCursorInfo(ByRef refCursorInfo As CursorInfo) As <MarshalAs(UnmanagedType.Bool)> Boolean
End Function
<StructLayout(LayoutKind.Sequential)>
Public Structure CursorInfo
Public Size As Integer
Public Flags As CursorInfoFlags
Public CursorHandle As IntPtr
Public ScreenPosition As Point ' no nos resulta necesario usar un Win32 NativePoint.
End Structure
Public Enum CursorInfoFlags As Integer
Hidden = &H0
Showing = &H1
Suppressed = &H2
End Enum
Ejemplo de uso:
Dim cursorInfo As New CursorInfo()
cursorInfo.Size = Marshal.SizeOf(GetType(CursorInfo))
GetCursorInfo(cursorInfo)
If (cursorInfo.Flags = CursorInfoFlags.Showing) Then
Dim isHandCursor As Boolean = (cursorInfo.CursorHandle = New IntPtr(65567))
If (isHandCursor) Then
' Hand cursor detected...
End If
End If
Nota: Lo he testeado en Windows 10 x64, desconozco si el valor
65567 puede ser distinto en otras versiones de Windows.
¡Saludos!
Cita de: Eleкtro en 14 Diciembre 2016, 01:33 AM
Hola. Primero que nada, esto no es Visual Basic, es Visual Basic.NET, las dudas sobre lenguajes de la plataforma .NET debes publicarlas aquí.
La Class System.Windows.Forms.Cursor representa al cursor de la aplicación, no del sistema. Si quieres, muestra el código original en C# e indica lo que no te ves capaz de traducir, para poder ayudarte con eso.
De todas formas, para determinar el tipo de cursor actual del sistema, puedes utilizar la función Win32 GetCursorInfo pasándole por referencia una estructura Win32 CursorInfo, y entonces GetCursorInfo asignará un handle/identificador reservado (inmutable) en el miembro CursorInfo.hCursor, ese handle hace referencia al tipo de cursor del sistema, por ejemplo el handle 65567 equivale al cursor "Hand", la manita como tu dices.
Esto que voy a mostrarte lo he sacado de mi API gratuita ElektroKit, la cual puedes utilizar para multitud de propósitos diferentes:
(http://i.imgur.com/DRKjghj.png) (https://github.com/ElektroStudios/ElektroKit/tree/master/Solution)
- CursorInfo Structure - ElektroKit (https://github.com/ElektroStudios/ElektroKit/blob/12f1ff734193945286b00b3abf605a1b89fea648/Solution/Elektro.Interop/Win32/Types/CursorInfo.vb)
- CursorInfoFlags Enum - ElektroKit (https://github.com/ElektroStudios/ElektroKit/blob/12f1ff734193945286b00b3abf605a1b89fea648/Solution/Elektro.Interop/Win32/Enums/CursorInfoFlags.vb)
- GetCursorInfo Function - ElektroKit (https://github.com/ElektroStudios/ElektroKit/blob/12f1ff734193945286b00b3abf605a1b89fea648/Solution/Elektro.Interop/Win32/NativeMethods/NativeMethods_User32.vb)
<SuppressUnmanagedCodeSecurity>
<DllImport("User32.dll", SetLastError:=True)>
Public Shared Function GetCursorInfo(ByRef refCursorInfo As CursorInfo) As <MarshalAs(UnmanagedType.Bool)> Boolean
End Function
<StructLayout(LayoutKind.Sequential)>
Public Structure CursorInfo
Public Size As Integer
Public Flags As CursorInfoFlags
Public CursorHandle As IntPtr
Public ScreenPosition As Point ' no nos resulta necesario usar un Win32 NativePoint.
End Structure
Public Enum CursorInfoFlags As Integer
Hidden = &H0
Showing = &H1
Suppressed = &H2
End Enum
Ejemplo de uso:
Dim cursorInfo As New CursorInfo()
cursorInfo.Size = Marshal.SizeOf(GetType(CursorInfo))
GetCursorInfo(cursorInfo)
If (cursorInfo.Flags = CursorInfoFlags.Showing) Then
Dim isHandCursor As Boolean = (cursorInfo.CursorHandle = New IntPtr(65567))
If (isHandCursor) Then
' Hand cursor detected...
End If
End If
Nota: Lo he testeado en Windows 10 x64, desconozco si el valor 65567 puede ser distinto en otras versiones de Windows.
¡Saludos!
Listo me sirvió mucho de apoyo tu código, lo que mas trabajo me costo fue encontrar el equivalente ami Hand pero ya esta resuelto muchas gracias ;-)