Functions > Misc >


BlockInput

Désactive/Active la souris et le clavier.

BlockInput ( flag )

Paramètre

flag     $BI_DISABLE (1) = Désactive les entrées utilisateur
    $BI_ENABLE (0) = Active les entrées utilisateur

Les constantes sont définies dans "AutoItConstants.au3".

Valeur de retour

Succès: Retourne 1.
Échec: Retourne 0. Déjà activé ou #RequireAdmin absent.

Remarques

Le tableau ci-dessous montre le comportement de BlockInput() en fonction de la version de Windows; toutefois, quel que soit la plateforme, l'appui de Ctrl+Alt+Del réactive les entrées du fait des caractéristiques de l'API de Windows.
Système d'exploitation Résultat de BlockInput()
Windows XP L'entrée utilisateur est bloquée et AutoIt peut simuler les entrées de la souris et du clavier. Voir les remarques ci-dessous pour un problème avec Windows XP SP1.
Windows Vista et plus L'entrée utilisateur est bloquée et AutoIt peut simuler les entrées de la souris et du clavier si #RequireAdmin est utilisé.

Un correctif Windows a été réalisé pour un bug sous Windows XP SP1 qui empêche l'envoi de la touche Alt (via la fonction Send()) tant que BlockInput() est active. Ce bug a été corrigé dans Windows XP SP2 et supérieur.

BlockInput() affecte seulement les entrées utilisateur. Les entrées provenant des fonctions comme Send() ou MouseMove() continuent à fonctionner.

En relation

Send

Exemple

#RequireAdmin

#include <AutoItConstants.au3>

Example()

Func Example()
    ; Exécute le Bloc-notes
    Run("notepad.exe")

    ; Attend 10 secondes pour que la fenêtre du bloc-notes apparaisse.
    Local $hWnd = WinWait("[CLASS:Notepad]", "", 10)

    ; Désactive les entrées utilisateur de la souris et du clavier.
    BlockInput($BI_DISABLE)

    ; Attend 2 secondes.
    Sleep(2000)

    ; Envoie la touche 'F5' au contrôle d'édition de Bloc-notes pour afficher la date et l'heure. Le handle retourné par WinWait est utilisé pour le paramètre 'titre' de ControlSend.
    ControlSend($hWnd, "", "Edit1", "{F5}")

    ; Active les entrées utilisateur à partir de la souris et du clavier.
    BlockInput($BI_ENABLE)

    ; Attend 2 secondes.
    Sleep(2000)

    ; Ferme la fenêtre du Bloc-notes en utilisant le handle retourné par WinWait.
    WinClose($hWnd)

    ; Maintenant, une fenêtre s'ouvrira et demandera d'enregistrer les modifications, le nom de classe de la fenêtre est appelé
    ; "#32770" et la simulation de la touche "TAB" pour passer au deuxième bouton qui simule  "ENTER" pour ne pas  "Enregistrer le fichier"
    WinWaitActive("[CLASS:#32770]")
    Sleep(500)
    Send("{TAB}{ENTER}")
EndFunc   ;==>Example