Visual Basic - Descartar la pulsación de la tecla Win

Life is soft - evento anual de software empresarial
 
Vista:

Descartar la pulsación de la tecla Win

Publicado por Yera (15 intervenciones) el 02/08/2004 14:14:14
Hola a todos!
Necesito que alguien me ayude. Quiero lograr (obviamente desde el VB) de alguna manera que cuando se presione la tecla de Windows (en XP y 2000) no suceda nada. Yo pongo un form maximizado y necesito que cuando se presione la tecla de Windows no aparezca el menú Inicio.
Si alguien tiene algún dato para aportar, muchas gracias. Si no, muchas gracias también.
Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Descartar la pulsación de la tecla Win

Publicado por tecniCam (186 intervenciones) el 02/08/2004 18:29:18
Bueno...
En principio hay que saber que la tecla WIN izquierda es es el número 91 de ASCII y la derecha es el número 92; al menos en mi ordenador así es.

Ahora introduce este código en el procedimiento KeyPress de donde corresponda:
If KeyAscii = 91 OR KeyAscii = 92 Then KeyAscii = 0

El KeyAscii = 0 es para que no haga nada.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No funciona...

Publicado por Yera (15 intervenciones) el 03/08/2004 14:26:19
Eso ya lo probé pero no funciona en WinXP. Desplega el menú "Inicio" de todas formas. ¿Se te ocurre de alguna otra manera? ¿Con alguna API que intercepte esa pulsación?
Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No funciona...

Publicado por Juan Carlos (94 intervenciones) el 03/08/2004 16:34:34
Prueba con este codigo, si bien no inhabilita la tecla, al menos la cierra de inmediato, tal vez de sirva de base para lograr exactamente lo que quieres...

Salu2..from Tampico

En una forma copia este codigo:, debes tener un timer con intervalo de 100 milisegundos llamado timer1

Const KEYEVENTF_KEYUP = &H2
Const VK_LWIN = &H5B
Const VK_RWIN = &H5C

Private Sub Form_Load()
w = 0
w2 = 0
End Sub

Private Sub Timer1_Timer()
w = GetKeyState(VK_LWIN)
w2 = GetKeyState(VK_RWIN)
If w Or w2 Then
If w Then
keybd_event VK_LWIN, 0, 0, 0
keybd_event VK_LWIN, 0, KEYEVENTF_KEYUP, 0
End If
If w2 Then
keybd_event VK_RWIN, 0, 0, 0
keybd_event VK_RWIN, 0, KEYEVENTF_KEYUP, 0
End If
'MsgBox "PULSASTE TECLA WIN"
w = 0
w2 = 0
End If
End Sub

En un modulo copia esto:

Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

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

Espero te sea de utilidad...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No funciona...

Publicado por Yera (15 intervenciones) el 03/08/2004 19:17:01
Gracias. Voy a probar. Después te cuento...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar