elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Ayuda Detectar MouseHand fuera del form
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda Detectar MouseHand fuera del form  (Leído 2,290 veces)
Cripting

Desconectado Desconectado

Mensajes: 23


Ver Perfil
Ayuda Detectar MouseHand fuera del form
« en: 13 Diciembre 2016, 22:21 pm »

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:
Código:
 If System.Windows.Forms.Cursor.Current = Cursors.Hand Then
            label1.text = "Se ah detectado el mouse hand"
            timer3.start()
        End If


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Ayuda Detectar MouseHand fuera del form
« Respuesta #1 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:




Código
  1. <SuppressUnmanagedCodeSecurity>
  2. <DllImport("User32.dll", SetLastError:=True)>
  3. Public Shared Function GetCursorInfo(ByRef refCursorInfo As CursorInfo) As <MarshalAs(UnmanagedType.Bool)> Boolean
  4. End Function
  5.  
  6. <StructLayout(LayoutKind.Sequential)>
  7. Public Structure CursorInfo
  8.    Public Size As Integer
  9.    Public Flags As CursorInfoFlags
  10.    Public CursorHandle As IntPtr
  11.    Public ScreenPosition As Point ' no nos resulta necesario usar un Win32 NativePoint.
  12. End Structure
  13.  
  14. Public Enum CursorInfoFlags As Integer
  15.    Hidden = &H0
  16.    Showing = &H1
  17.    Suppressed = &H2
  18. End Enum

Ejemplo de uso:
Código
  1. Dim cursorInfo As New CursorInfo()
  2. cursorInfo.Size = Marshal.SizeOf(GetType(CursorInfo))
  3. GetCursorInfo(cursorInfo)
  4.  
  5. If (cursorInfo.Flags = CursorInfoFlags.Showing) Then
  6.    Dim isHandCursor As Boolean = (cursorInfo.CursorHandle = New IntPtr(65567))
  7.  
  8.    If (isHandCursor) Then
  9.        ' Hand cursor detected...
  10.    End If
  11. End If

Nota: Lo he testeado en Windows 10 x64, desconozco si el valor 65567 puede ser distinto en otras versiones de Windows.

¡Saludos!


« Última modificación: 14 Diciembre 2016, 01:42 am por Eleкtro » En línea



Cripting

Desconectado Desconectado

Mensajes: 23


Ver Perfil
Re: Ayuda Detectar MouseHand fuera del form
« Respuesta #2 en: 14 Diciembre 2016, 02:54 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:




Código
  1. <SuppressUnmanagedCodeSecurity>
  2. <DllImport("User32.dll", SetLastError:=True)>
  3. Public Shared Function GetCursorInfo(ByRef refCursorInfo As CursorInfo) As <MarshalAs(UnmanagedType.Bool)> Boolean
  4. End Function
  5.  
  6. <StructLayout(LayoutKind.Sequential)>
  7. Public Structure CursorInfo
  8.    Public Size As Integer
  9.    Public Flags As CursorInfoFlags
  10.    Public CursorHandle As IntPtr
  11.    Public ScreenPosition As Point ' no nos resulta necesario usar un Win32 NativePoint.
  12. End Structure
  13.  
  14. Public Enum CursorInfoFlags As Integer
  15.    Hidden = &H0
  16.    Showing = &H1
  17.    Suppressed = &H2
  18. End Enum

Ejemplo de uso:
Código
  1. Dim cursorInfo As New CursorInfo()
  2. cursorInfo.Size = Marshal.SizeOf(GetType(CursorInfo))
  3. GetCursorInfo(cursorInfo)
  4.  
  5. If (cursorInfo.Flags = CursorInfoFlags.Showing) Then
  6.    Dim isHandCursor As Boolean = (cursorInfo.CursorHandle = New IntPtr(65567))
  7.  
  8.    If (isHandCursor) Then
  9.        ' Hand cursor detected...
  10.    End If
  11. 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  ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Mostrar UserControl por fuera del form.
.NET (C#, VB.NET, ASP)
P[i] 3 4,183 Último mensaje 12 Octubre 2007, 20:20 pm
por P[i]
Abrir un form desde otro form con netbeans en java
Java
murdock_ 3 47,598 Último mensaje 1 Enero 2009, 03:44 am
por sapito169
Detectar tecla presionada en el form (Resuelto)
.NET (C#, VB.NET, ASP)
Zeroql 9 19,330 Último mensaje 21 Agosto 2010, 17:33 pm
por raul338
Activar timer del form FUERA DEL FORM...
Programación Visual Basic
TheJucas21 2 2,472 Último mensaje 29 Junio 2014, 22:38 pm
por FacuM
Detectar item seleccionado en listbox desde otro form
Programación Visual Basic
rapbyone 1 2,509 Último mensaje 9 Julio 2016, 13:29 pm
por pkj
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines