Mostrar mensaje al pulsar bloq mayus

28/07/2006 - 20:04 por Marco Elgueta | Informe spam
Hola!
Quisiera saber como puedo mandar un mensaje cuando presiono bloq mayus que
se activo y cuando se haya desactivado pero sin hacer enter ni nada. Con solo
presionar una tecla.

Preguntas similare

Leer las respuestas

#1 SoftJaén
28/07/2006 - 20:24 | Informe spam
"Marco Elgueta" preguntó:

Quisiera saber como puedo mandar un mensaje cuando presiono bloq mayus que
se activo y cuando se haya desactivado pero sin hacer enter ni nada. Con
solo presionar una tecla.



Puedes utilizar un control Timer, que cada cierto intervalo de tiempo,
compruebe el estado del bloque mayúscula:

' Establecemos el intervalo del control Timer a
' un cuarto de segundo.
'
With Timer1
.Interval = 250
.Start()
End With

Private Sub Timer1_Tick( ... ) Handles Timer1.Tick

' Ejecutar el código para comprobar el estado del
' bloque numérico

End Sub

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Respuesta Responder a este mensaje
#2 Marco Elgueta
28/07/2006 - 20:45 | Informe spam
hice esto pero no me resulta:

Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As
Long) As Integer
Private Sub BLOQMAYUS()

Dim Tmp As Object = GetKeyState(20)
If Tmp = 1 Then
Me.lblBloqMayus.Text = "Bloq Mayús está activado"
Else
Me.lblBloqMayus.Text = Nothing
End If
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
With Timer1
.Interval = 10
.Start()
If .Interval = 10 Then
BLOQMAYUS()
End If
End With
End Sub




"SoftJaén" wrote:

"Marco Elgueta" preguntó:

> Quisiera saber como puedo mandar un mensaje cuando presiono bloq mayus que
> se activo y cuando se haya desactivado pero sin hacer enter ni nada. Con
> solo presionar una tecla.

Puedes utilizar un control Timer, que cada cierto intervalo de tiempo,
compruebe el estado del bloque mayúscula:

' Establecemos el intervalo del control Timer a
' un cuarto de segundo.
'
With Timer1
.Interval = 250
.Start()
End With

Private Sub Timer1_Tick( ... ) Handles Timer1.Tick

' Ejecutar el código para comprobar el estado del
' bloque numérico

End Sub

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.



Respuesta Responder a este mensaje
#3 SoftJaén
28/07/2006 - 20:53 | Informe spam
"Marco Elgueta" escribió:

hice esto pero no me resulta:

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
With Timer1
.Interval = 10
.Start()
If .Interval = 10 Then
BLOQMAYUS()
End If
End With
End Sub



Saca fuera del evento «Tick» el código para configurar el control Timer,
porque si el control no está debidamente configurado, NUNCA se ejecutará
dicho evento. :-)

Si no lo deseas configurar en tiempo de diseño, mediante la ventana
«Propiedades», puedes configurar el control Timer en tiempo de ejecución,
incluyendo el código en el evento «Load» del formulario.

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Respuesta Responder a este mensaje
#4 Jose Luis
31/07/2006 - 19:48 | Informe spam
Visita esta Web:
http://www.elguille.info/NET/dotnet...ntoNet.htm

Aquí te explican como deshabilitar unas serie de teclas, en modo hook, es
decir enganchan directamente con el controlador del teclado vía API. Estudio
el código que te muestran y molifícalo para que te notifique que se a
pulsado las mayúsculas.

Mira así a bote pronto, he mirado el código que viene y simplemente
modificando unas cosas te serviría, supongo

He añadido la siguiente Constante: Private Const VK_MAYUS As Integer =
&HA0

He copiado la siguiente función y la he modificado así:

Private Function LLKeyBoardProc_MAYUS(ByVal nCode As Integer, _
ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Dim pkbhs As tagKBDLLHOOKSTRUCT
Dim ret As Integer = 0
'
' copiar el parámetro en la estructura
pkbhs = CType(Marshal.PtrToStructure(New IntPtr(lParam),
pkbhs.GetType), tagKBDLLHOOKSTRUCT)
'
If nCode = HC_ACTION Then
'
' si se pulsa Mayúsculas
If pkbhs.vkCode = VK_MAYUS Then
MsgBox("Se ha pulsado MAYUS")
ret = 1
End If
End If

If ret = 0 Then
ret = CallNextHookEx(mHook, nCode, wParam, lParam)
End If
'
Return ret
'
End Function

Y por ultimo he modificado la siguiente función:

Public Sub HookKeyB(ByVal hMod As Integer)
' instalar el gancho para el teclado
' hMod será el valor de App.hInstance de la aplicación
mHook = SetWindowsHookEx(WH_KEYBOARD_LL, New
LLKeyBoardProcDelegate(AddressOf LLKeyBoardProc_MAYUS), hMod, 0)
End Sub

Ya solo te resta adecuarla a tus necesidades y darle las gracias a El
Guille.

Desde aquí por mi parte GRACIAS Guillermo. :D


Suerte.
"Marco Elgueta" escribió en el
mensaje news:
Hola!
Quisiera saber como puedo mandar un mensaje cuando presiono bloq mayus que
se activo y cuando se haya desactivado pero sin hacer enter ni nada. Con
solo
presionar una tecla.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida