DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Fonctions standard / Fonctions de gestion de Windows / Fonctions diverses Windows
  • Comment spécifier les touches ou les manipulations de la souris à effectuer ?
  • Divers
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Simule des manipulations de touches au clavier et à la souris. La fonction EnvoieTouche peut envoyer des frappes de touches ou des manipulations de la souris à toute application conçue pour être exécutée dans un environnement Windows.
Attention : Sous Windows Vista et supérieur, si le mécanisme de l'UAC est activé, la fonction EnvoieTouche ne fonctionne pas correctement : il est possible d'envoyer des touches au processus en cours, mais pour envoyer des touches à un autre processus, il est nécessaire d'élever les droits de l'application (avec un manifeste par exemple).
Exemple
EXTERNE "KeyConst.wl"
i est un entier
// Exécute l'application Calculatrice
LanceAppli("Calc.exe", exeActive)
// Attente du chargement de la calculette
Multitâche(50)
// Définit la boucle de comptage
POUR i = 1 À 100
// Envoie des touches à l'application Calculatrice
EnvoieTouche(NumériqueVersChaîne(i) + "{+}")
FIN
// Lit le total final
EnvoieTouche("=")
 
// Temporisation
Multitâche(100)
 
// Envoie Alt+F4 pour fermer l'application Calculatrice
EnvoieTouche("%{F4}")
// Simule l'utilisation du clic droit de la souris sur une colonne de table
// Une colonne de table n'a pas de handle, on lui donne donc le focus pour y remédier
DonneFocus(TABLE_TableClient.COL_NomClient)
// Envoie du clic droit
EnvoieTouche("{BTNDROIT,1,1}", TABLE_TableClient.COL_NomClient)
// Dérouler le menu "&Fichier" d'une fenêtre principale
EnvoieTouche("%&f")
// Dérouler le menu "&Fichier .. &Nouveau" d'une fenêtre principale
EnvoieTouche("%&fn")
Syntaxe

Envoyer des touches / des actions souris à une fenêtre ou un champ identifié par son Handle Masquer les détails

<Résultat> = EnvoieTouche(<Touche ou souris> [, <Handle de la fenêtre ou du champ>])
<Résultat> : Booléen
  • Vrai si l'envoi de touches a réussi,
  • Faux dans le cas contraire.
<Touche ou souris> : Chaîne de caractères
Manipulations de la souris, touche ou combinaison de touches au clavier à exécuter. Chaque touche est représentée par un ou plusieurs caractères (voir notes).
<Handle de la fenêtre ou du champ> : Entier optionnel
Handle de la fenêtre (ou du champ) à laquelle les touches doivent être envoyées. Si ce paramètre n'est pas spécifié, les touches sont envoyées à la fenêtre en cours.
Le handle d'une fenêtre ou d'un champ peut être connu avec les fonctions Handle ou SysFenHandle.

Envoyer des touches / des actions souris à une fenêtre ou un champ identifié par son nom Masquer les détails

<Résultat> = EnvoieTouche(<Touche ou souris> [, <Nom de la fenêtre ou du champ>])
<Résultat> : Booléen
  • Vrai si l'envoi de touches a réussi,
  • Faux dans le cas contraire.
<Touche ou souris> : Chaîne de caractères
Manipulations de la souris, touche ou combinaison de touches au clavier à exécuter. Chaque touche est représentée par un ou plusieurs caractères (voir notes).
<Nom de la fenêtre ou du champ> : Chaîne de caractères optionnelle
Nom ou alias de la fenêtre (ou du champ) à laquelle les touches doivent être envoyées. Si ce paramètre n'est pas spécifié, les touches sont envoyées à la fenêtre en cours.
Remarques

Comment spécifier les touches ou les manipulations de la souris à effectuer ?

Le paramètre <Touche ou souris> correspond aux manipulations de la souris, touche ou combinaison de touches au clavier permettant de lancer le raccourci. Chaque touche est représentée par un ou plusieurs caractères. Il n'est pas nécessaire de préciser "Ctrl-Alt" qui est ajouté automatiquement. Par défaut, il n'y a pas de touche de raccourci.
Pour utiliser un seul caractère du clavier, il faut utiliser le caractère proprement dit. Par exemple, pour représenter la lettre A, affectez la valeur "A" au paramètre <Touche ou souris>. Pour utiliser une suite de caractères, utilisez directement la suite de caractères ("ADB").
Attention : La fonction attribue une signification spéciale aux signes suivants :
  • plus (+),
  • insertion (^),
  • pourcentage (%),
  • parenthèses ( ).
Pour utiliser l'un de ces caractères, il est nécessaire de le placer entre accolades. Par exemple, pour utiliser le signe plus (+), tapez {+}. Pour utiliser des accolades, utilisez les caractères {{} et {}}.
Pour utiliser des caractères spéciaux, des codes spécifiques sont nécessaires pour identifier :
  • les caractères n'ayant aucune action à l'écran (par exemple, la touche Entrée),
  • les caractères correspondant à une action (par exemple, les touches de fonction).
Il est nécessaire d'utiliser les codes suivants :
ToucheCodeToucheCode
RET.ARR{RA}PAUSE{PAUSE}
VERR.MAJ{VERRMAJ}SUPPR{SUPPR}
BAS{BAS}FIN{FIN}
ENTREE{ENTREE}ECHAP{ECHAP}
AIDE{AIDE}ORIGINE{ORIGINE}
INSERTION{INSER}GAUCHE{GAUCHE}
VERR.NUM{VERRNUM}PG.SUIV{PGSUIV}
PG.PREC{PGPREC}IMPR. ECRAN{IMPRECR}
DROITE{DROITE}ARRET.DEFIL{ARRETDEFIL}
TAB{TAB}HAUT{HAUT}
F1{F1}F2{F2}
F3{F3}F4{F4}
F5{F5}F6{F6}
F7{F7}F8{F8}
F9{F9}F10{F10}
F11{F11}F12{F12}
F13{F13}F14{F14}
F15{F15}F16{F16}
+ du clavier numérique{NUM+}- du clavier numérique{NUM-}

Pour spécifier une combinaison de touches avec Maj, Ctrl ou Alt, il est nécessaire de faire précéder le code normal de la touche d'un ou plusieurs codes parmi les suivants :
ToucheCode
MAJ+
Ctrl^
ALT%

Pour spécifier que les touches Maj, Ctrl et/ou Alt doivent être maintenues enfoncées pendant que l'on appuie sur une autre touche : par exemple, pour que la touche Maj soit maintenue enfoncée en même temps que la touche E, utilisez "+e".
Pour spécifier qu'une touche doit être répétée, il est nécessaire d'utiliser une expression de la forme {<Touche> <Nombre>}. Remarque : un espace doit être présent entre les paramètres <Touche> et <Nombre>. Par exemple :
  • {LEFT 42} signifie que la touche gauche doit être enfoncée 42 fois,
  • {h 10} signifie qu'il faut appuyer 10 fois sur la touche h.
Pour spécifier les manipulations effectuées à l'aide de la souris, il est nécessaire d'utiliser les codes suivants :
ManipulationCode
Clic bouton gauche de la souris{BTNGAUCHE[,x[,y]]}
Double clic bouton gauche de la souris{BTNGAUCHE2[,x[,y]]}
Bouton gauche de la souris enfoncé{BTNGAUCHE+[,x[,y]]}
Bouton gauche de la souris relâché{BTNGAUCHE-[,x[,y]]}
Clic bouton droit de la souris{BTNDROIT[,x[,y]]}
Double clic bouton droit de la souris{BTNDROIT2[,x[,y]]}
Bouton droit de la souris enfoncé{BTNDROIT+[,x[,y]]}
Bouton droit de la souris relâché{BTNDROIT-[,x[,y]]}
Clic bouton milieu de la souris{BTNMILIEU[,x[,y]]}
Double clic bouton milieu de la souris{BTNMILIEU2[,x[,y]]}
Bouton milieu de la souris enfoncé{BTNMILIEU+[,x[,y]]}
Bouton milieu de la souris relâché{BTNMILIEU-[,x[,y]]}
Déplacement souris{SOURIS[,x[,y]]}

x et y sont respectivement les abscisses et les ordonnées par rapport à la zone client de la fenêtre destinataire. Si x ou y ne sont pas précisés, la valeur prise en compte est 0.

Divers

  • La fonction EnvoieTouche ne peut pas envoyer la touche Impr. écran à une application.
  • Java La fonction EnvoieTouche peut envoyer la touche Impr. écran à une application.
  • Sous Windows Vista (et supérieur), la fonction EnvoieTouche ne fonctionne pas correctement si le mécanisme de l'UAC est activé.
  • La fonction EnvoieTouche prend en compte le clavier courant (modifié par la fonction ChangeClavier) : les caractères envoyés dépendent du clavier utilisé.
  • La fonction EnvoieTouche ne fonctionne pas sur une session TSE non interactive.
Liste des exemples associés :
La fonction EnvoieTouche Exemples unitaires (WINDEV) : La fonction EnvoieTouche
[ + ] Envoi de séquences clavier à une application avec les fonctions WLangage.
Dans cet exemple, nous abordons les principaux thèmes suivants :
1/ Fonction EnvoieTouche()
2/ Fonctions systèmes

Cet exemple montre comment piloter une application en lui envoyant des séquences clavier.
Une application WINDEV peut directement manipuler des applications externes, telles que Word par simple liaison OLE Automation ou DDE.
Pour les applications ne supportant pas ces types de liaisons, il est possible de simuler des frappes au clavier, à l'aide de la fonction EnvoieTouche, afin de manipuler ces applications.
Composante : wd290std.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 25/05/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale