Access

Bloqueando el teclado y la entrada del mouse usando VBA

¿Alguna vez ha querido bloquear temporalmente la entrada de su usuario mientras realiza alguna operación? Bueno, VBA te ofrece esa posibilidad y eso es lo que vamos a explorar en este artículo.

La API de BlockInput nos ofrece una forma simple y conveniente de deshabilitar temporalmente la interacción del usuario con el sistema.

Basos básicos de bloqueo

Primero debemos incluir la declaración (s) de API necesaria:

#If VBA7 Then
    Private Declare PtrSafe Function BlockInput Lib "user32" (ByVal fBlock As Long) As Long
#Else
    Private Declare Function BlockInput Lib "user32" (ByVal fBlock As Long) As Long
#End If

Y luego podemos bloquear/bloquear las entradas simplemente haciendo:

BlockInput True

Dicho esto, la función realmente devuelve un valor de 0 si falla, por lo que es una mejor práctica usarla haciendo:

Dim Ret As Long

Ret = BlockInput(True)
if Ret <> 0 Then 
	'it worked
Else
	'We have a problem
End If

Las limitaciones

Lamentablemente, hay una limitación colosal con el uso de esta API y ni siquiera se menciona en la documentación.

La API debe ser llamado por un proceso que se ‘ejecuta como administrador’ de lo contrario falla. Podemos usar getLasterRor () para recopilar información sobre fallas, que en el caso específico de la API se ejecuta normalmente (no ‘ejecutar como administrador’, por lo que sin provocado elevados) devuelve un «error 5: se niega el acceso».

Además, de la documentación de ayuda en la API:

El sistema desbloqueará la entrada en los siguientes casos:

  • El hilo que bloqueó la entrada inesperadamente sale sin llamar a BlockInput con Fblock establecido en False. En este caso, el sistema limpia correctamente y vuelve a habilitar la entrada.
  • El usuario presiona CTRL+ALT+DEL o el sistema invoca el cuadro de mensaje modal de error del sistema duro (por ejemplo, cuando un programa falla o un dispositivo falla).

Microsoft

Entonces, al final del día, la API Blockinput puede ser útil, pero solo En las condiciones correctas.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Mira también
Cerrar
Botón volver arriba