<< Retour au sommaire

 

Les fenêtres et le mode Home Row

 

 

 

Changer le raccourci clavier du mode Home Row

 

Le mode Home Row est un script développé dans le fichier « Defaut.jss », son raccourci clavier qui permet de l’exécuté a changé avec la succession des versions de jaws et est devenu fastidieux à réalisé.

C’est la raison pour laquelle je vous propose de le modifier une fois pour toute depuis le « gestionnaire de clavier ».

1.      Ouvrez la liste des utilitaires de JAWS depuis le raccourci clavier Insère +F2 ;

2.      Pressez flèche basse jusqu’à atteindre « Gestionnaire de clavier », pressez la touche « Entrée » ;

3.      Dans la liste des fichiers scripts qui apparaît à l’écran, recherchez « Default », puis, faites tabulation, vous arrivez dans la liste des fonctions et scripts présents dans « Default.jss » ;

4.      Recherchez le script intitulé « Homerow », puis, validez la commande du menu déroulant :

ALT, « Action », « Changer le raccourci » ;

5.      Vous arrivez dans une boîte de dialogue, réalisez le nouveau raccourci, je vous propose WINDOWS +Espace ;

6.      Faites tabulation jusqu’au bouton « Ok » et pressez la touche « Entrée » ;

7.      Vous êtes de retour dans le « Gestionnaire de clavier », quittez-le en réalisant le raccourci clavier ALT +F4.

 

Qu’est-ce que le mode Home Row ?

 

Le mode « Home Row » est un mode d’obtention des propriétés des différents composants des objets présents à l’écran.

La structure des fenêtres d’une application est comparable à la structure des dossiers et sous dossiers d’un disque, il s’agit d’une arborescence.

Du reste, cette structure en hiérarchie est appelée « Parents-enfants »…

 

La principale fenêtre d’une application est dite, « La fenêtre principale », logique, non ?

Dans le concept « parent-enfants », c’est un peu le patriarche de l’interface de l’application…

 

Par exemple, dans Microsoft WORD, la fenêtre principale est celle qui s’affiche lorsque vous démarrez l’application, elle s’intitule « Document1 Microsoft WORD ».

GetAppTitle ()

 

Cette fonction permet d’obtenir le nom de la fenêtre principale de l’application, même si vous êtes actuellement positionnés dans une boîte de dialogue découlant d’une commande de celle-ci. Retournant une information de type « String », vous pouvez l’employer de la façon suivante :

SayString (GetAppTitle ()), lit la barre de titre de la fenêtre principale, et ce, quelle que soit votre position dans l’arborescence des fenêtres de cette application.

 

Le focus

D’ailleurs, « votre position » dans une application sous entend la fenêtre qui contient le « focus ». Le focus correspond au curseur PC, le curseur de votre clavier, et il ne peut pas être présent dans plusieurs fenêtres. Si vous pressez une touche de votre clavier, seule une fenêtre en sera affectée par les conséquences.

·        La prise de focus est un évènement, il exprime l’arrivée du curseur PC dans une fenêtre ;

·        Par opposition, le départ du focus d’une fenêtre est dit, « Perte de focus ».

 

Mais qu’est-ce qu’une fenêtre ?

 

·        Les fenêtres correspondent à des objets indépendants qui constituent la structure visible d’une application, son interface.

Une fenêtre est une fenêtre, mais les éléments qui la constituent en sont également…

Par exemple, la fenêtre principale de WORD, « Document1 Microsoft Word », est une fenêtre, le ruban en est une, la zone d’édition dans laquelle vous écrivez le texte en est une autre, ainsi que tous les objets se présentant comme « commande » ou tout simplement comme « zone d’information ».

 

Dans une boîte de dialogue, elle-même une fenêtre, vous pouvez par exemple trouver les fenêtres suivantes :

·        Le bouton « Annuler » ;

·        Le bouton « Ok » ;

·        La zone de liste déroulante « Choix du document » ;

·        Le label affichant quelques conseils techniques etc.

 

Vous voyez, sur le plan technique, une fenêtre ainsi que tous ses composants sont considérées comme des fenêtres, seuls leur type, leur nom et leur place dans la hiérarchie diffèrent.

Et si intellectuellement on peut supposer à juste titre qu’une fenêtre est un conteneur de contrôles, il n’en demeure pas moins que ce concept, particulièrement adapté au langage humain il est vrai, devra être impérativement remis en question.

 

Le mode Home Row est donc un mode de navigation qui offre la possibilité d’appréhender la hiérarchie des fenêtres d’une application et d’obtenir, pour chacune d’entre elles, leurs propriétés :

Les principales propriétés d’une fenêtre sont :

·        Le nom, par exemple, « Ok », « Annuler », « Document1 Microsoft WORD » etc.

·        La classe, c’est une catégorie de types de fenêtres, par exemple « Buton », « Edit » etc.

·         Le type, c’est également une propriété liée à la catégorie de la fenêtre, par exemple « Zone de liste déroulante » ;

·        Le sous type, c’est une propriété détaillée du type, car pour un type donné, il existe parfois plusieurs sous types, par exemple, Dans le bloc notes, la principale zone d’édition dans laquelle vous saisissez le texte possède les propriétés suivante :

·        Classe = « Edit », Type = « Édition », Sous type = « 66 ».

Tandis que la zone d’édition de la boîte de dialogue « Ouvrir » dans laquelle vous devez saisir le nom du document à ouvrir, possède les propriétés suivantes :

Classe = « Edit », Type = « Édition », Sous type = « 41 ».

Vous constatez donc que seule la propriété « sous type » permet dans ce cas de figure de distinguer ces 2 fenêtres de type « Édition »…

·        Handle, c’est l’identifiant de la fenêtre qui est attribué par WINDOWS. Cet identifiant est aléatoire, c’est-à-dire qui ne correspond à rien et il est régénéré à chaque apparition de la fenêtre. Certains scripteurs appellent cette propriété « la poignée » ;

·        Le « Contrôle ID », il s’agit d’également d’un identifiant de fenêtre, mais celui-ci n’est pas déterminé par le système. Il existe 2 types de « Contrôle ID » :

1.      Un « Contrôle ID » défini par le concepteur de la fenêtre, le programmeur, dans quel cas cette propriété est fixe, elle ne varie jamais ;

2.      Un « Contrôle ID » que le concepteur n’a pas étiqueté lors du développement, dans quel cas le numéro ne correspond à rien, il est également aléatoirement établi à l’ouverture de la fenêtre.

 

Voici une petite fenêtre développée en « Purebasic » qui contient un texte et un bouton :

Cliquez ici pour télécharger encouragement.exe

 

Description de la fenêtre :

·        Le nom de l’application est « encouragement.exe » ;

·        La barre de titre est : « Découverte du langage script » ;

·        Présence du texte suivant :

« Je vous souhaite la bienvenue dans l’apprentissage du mode Home Row, il vous faudra seulement un peu de perspicacité ! »

·        Présence du bouton « Ok ».

 

Dès lors que vous avez téléchargé « encouragement.exe », exécutez-le.

La prise de focus est réalisée sur le bouton « Ok », N’est-ce pas ?

D’ailleurs, faites « tabulation » et « MAJ +Tab », que constatez-vous ?

Eh bien, qu’il est impossible de déplacer le focus, seul le bouton « Ok » peut recevoir le curseur PC, la prise de focus est donc sur « Ok » et ne peut être déplacé.

Les seules possibilités dans l’état actuel des choses sont :

1.      Lire le contrôle sur lequel le focus est pris avec le raccourci clavier Insère +Tab qui, entre nous, déclenche l’exécution du script intitulé SayWindowPromptAndText ;

2.      Lire la barre de titre de la fenêtre depuis le raccourci clavier Insère +T, qui, entre nous, déclenche l’exécution du script intitulé SayWindowTitle ;

3.      Lire l’intégralité de la fenêtre depuis le raccourci clavier Insère +B, qui, toujours entre nous, déclenche l’exécution du script intitulé ReadBoxInTabOrder.

 

Du reste, ce Insère +B, faites-le, que constatez-vous ?

En fait, entre la barre de titre de la fenêtre et le bouton « Ok », ce trouve le texte suivant :

« Je vous souhaite la bienvenue dans l’apprentissage du mode HomeRow, il vous faudra seulement un peu de perspicacité ! »

En effet, ce texte est également un objet à part entière, et pour être plus précis, il s’agit d’un texte statique sur lequel le focus est impossible.

Vous pouvez donc survoler ce texte avec le curseur JAWS, le curseur invisible, mais il est impossible de lui placer le focus…

 

L’afficheur virtuel des informations techniques

 

Vous avez la possibilité d’afficher le Contrôle ID, la classe et le Handle de la fenêtre sur laquelle vous êtes positionnés en réalisant le raccourci clavier Insère +CTRL +F1.

Ces informations techniques s’affichant dans l’afficheur virtuel, vous devez presser la touche « échappement » pour la refermer.

Ici, le « Handle » est intitulé « identificateur ».

 

Maintenant, nous allons analyser cette fenêtre depuis le mode Home Row.

Pour commencer, activez le mode Home Row, et pour moi, il s’agit du raccourci clavier WINDOWS +Espace.

Avant d’analyser la fenêtre que vous venez de télécharger, voici la liste des manipulations réalisables depuis le mode Home Row…

 

Les commandes du mode Home Row

 

Dès lors que vous avez activez ce mode, vous pouvez vous déplacer à travers les fenêtres et les contrôles de votre application en utilisant les touches de circulations suivantes :

·  Tabulation, fenêtre suivante à un même niveau hiérarchique ;

·  MAJ +TAB, fenêtre précédente à un même niveau hiérarchique ;

·  F2, Première fenêtre enfant ;

·  MAJ +F2, fenêtre parent ;

·  F8, lecture de l’intégralité de la fenêtre en cours d’analyse avec le mode Home Row.

 

En circulant dans l’arborescence des fenêtres, au lieu d’entendre les informations des fenêtres de façon ordinaire, vous pouvez sélectionner vous-mêmes les informations que vous souhaitez entendre, par exemple, la classe, le type, le sous type etc.

Le type de l’information que vous souhaitez entendre est appelé le mode OUTPUT.

On sélectionne le mode OUTPUT en pressant autant de fois que nécessaire la touche de fonction F3, ou MAJ +F3 en marche arrière.

Ensuite, vous pouvez vous déplacer. Par exemple, si vous souhaitez entendre les classes de fenêtres, sélectionnez le mode Output « Classe », depuis la touche F3, puis, déplacez-vous avec « tabulation », « MAJ +Tab », « F2 » et « MAJ +F2 ».

A chaque fois que vous arriverez sur une fenêtre, JAWS ne vous dira plus le nom et l’état de cette dernière, mais sa classe.

Vous pouvez faire répéter cette information en pressant la touche F1. Pour que JAWS vous épelle cette information, pressez 2 fois rapidement la touche F1, et CTRL +F1 la copie dans le presse-papiers.

 

Maintenant, revenons dans notre fenêtre exemple…

Si vous activez le mode Home Row sur le bouton « Ok », voici les données techniques que vous obtiendrez :

·        Pour « Handle », le numéro est instable, il change à chaque fois que vous ouvrez la fenêtre ;

·        Pour « Configuration », c’est-à-dire le Contrôle ID, le numéro est 2, et c’est normal, puisque c’est moi qui est développé cette fenêtre en « Purebasic », j’ai tout simplement pris le soin d’assigner un « Contrôle ID » fixe à tous ses éléments ;

·        Pour la « Classe », il s’agit d’un « Buton » ;

·        Pour le « type », il s’agit d’un « bouton » ;

·        Pour le « sous type », il s’agit d’un bouton de type 1 ;

·        Pour « propriétaire », il s’agit de l’application « Encouragement.exe » ;

·        Pour le « Nom réel », vous trouverez « Découverte du langage script », c’est-à-dire la barre de titre de la fenêtre contenant le Contrôle.

 

Fenêtre principale et fenêtre réelle

 

Lorsque vous êtes par exemple dans le bloc-notes, la fenêtre qui contient la zone d’édition dans laquelle vous écrivez votre texte est la fenêtre principale.

Si vous ouvrez une boîte de dialogue telle que « Enregistrer sous », cette fenêtre est la fenêtre réelle du bouton « Annuler ».

En clair :

1.      La fenêtre mère de la fenêtre « Annuler » est la fenêtre réelle, c’est la boîte de dialogue « Enregistrer sous » ;

2.      La fenêtre mère de la fenêtre « Enregistrer sous », c’est la fenêtre principale, celle qui contient le document et le menu déroulant, et qui peut avoir la barre de titre « SansTitre Bloc-notes » ;

3.      Quant au bouton « Enregistrer », il est le frère du bouton « Annuler », en tout cas placé sur un même niveau hiérarchique.

 

Bon, à partir de maintenant, je ne dirai plus un « contrôle » lorsque je ferai référence à une commande d’une fenêtre réelle, mais une « fenêtre ».

En revenant à notre application « Encouragement.exe », et toujours avec le mode Home Row actif, réalisez le raccourci MAJ +TAB.

Et oui, vous venez d’atteindre un texte statique, une sorte de label dont le curseur PC ne vous aurait pas permis d’atteindre.

 En interrogeant les différentes données techniques depuis le mode OUTPUT, vous trouverez :

·        Configuration, donc le « Contrôle ID » numéro 1 ;

·        « Classe », il s’agit d’un objet de type « Static » ;

·        Pour le « type », il s’agit d’un « texte statique » ;

·        Pour le « sous type », le numéro 6.

·        Propriétaire ? C’est l’application « Encouragement.exe » ;

·        Quant à sa fenêtre réelle, pas de changement, il s’agit toujours de « Découverte du langage script », donc la barre de titre de la réelle fenêtre contenant.

 

Pour ces 2 fenêtres, celles que nous venons d’analyser, aucune fenêtre enfant n’est présente, c’est ce qu’il vous est annoncé lorsque vous pressez la touche F2.

En revanche, lorsque vous remontez l’arborescence des fenêtres avec MAJ +F2, dans les 2 cas de figure, vous atteignez la fenêtre réelle.

Voici les données techniques qui vous sont indiquées depuis le mode OUTPUT :

·        « Nom » et « Nom réelle », « Découverte du langage script » ;

·        « Configuration », donc le « Contrôle ID », 0 ;

·        « Classe », « WindowClass_0 ».

 

Avant de tenter d’améliorer la lecture de notre fameuse fenêtre « Découverte du langage script », voici une liste de fonctions indispensables :

 

GetWindowClass ()

 

Cette fonction retourne un string, il s’agit de la classe de la fenêtre active et nécessite un paramètre, le Handle de la fenêtre désirée. Pour obtenir le Handle de la fenêtre courante, utilisez la fonction GetFocus. 

GetWindowClass (GetFocus ())

Mais attention, l’information WINDOWS CLASS peut être insuffisante pour certains types de fenêtres.

C’est le cas par exemple pour les boutons. Le fait de savoir que la fenêtre courante est un bouton ne précise pas si le bouton est de type bouton simple ou de type menu bouton.

La classe est déterminée par le programmeur lors de la création de l’application. S’il ne détermine aucune classe, c’est le langage de programmation utilisé pour élaborer l’application qui la déterminera…

 

GetWINDOW TYPE

 

L’information « Window type » est aussi une chaîne de caractères concernant le type d’une fenêtre. Néanmoins, l’information est plus détaillée que WINDOW CLASS. Il n’en reste pas moins que pour certaines fenêtres, les informations que WINDOW CLASS et WINDOWS TYPE retournent peuvent être identiques, si le programmeur n’a pas prévu de différencier ces 2 informations.

Cette information s’obtient avec la fonction :

GetWindowType ()

Ici encore, vous devez placer un paramètre à la fonction, il s’agit du Handle de la fenêtre interrogée.

GetWindowType (GetFocus ())

Remarque :

·        l’information retournée par cette fonction est en anglais.

 

GetWindowTypeCode

 

Il vous est possible d’obtenir l’information WINDOW TYPE sous la forme d’une valeur numérique au lieu d’une chaîne de caractères. Pour ce faire, vous ne devez pas utiliser la fonction GetWindowType mais la fonction :

GetWindowTypeCode (), ou plutôt, GetWindowTypeCode ( GetFocus ())

 

Pour comprendre la signification de la définition d’une valeur retourné par cette fonction, il existe des constantes qui sont définies dans le fichier « HJCONST .JSH »

Dans ce fichier, vous trouverez des lignes du genre :

WT_BUTTON =1,

WT_EDIT =3,

Remarque :

·        « WT » signifie WINDOW TYPE .

 

GetWindowSubTypeCode

 

Pour ne pas nous arrêter en si bon chemin, nous allons descendre encore un peu plus dans les profondeurs du détail. En effet, nous disposons d’une fonction qui nous retourne une information encore plus détaillée que WINDOWS TYPE CODE.

Il s’agit de WINDOWS SUB TYPE CODE.

Cette information s’obtient avec la fonction :

GetWindowSubTypeCode (), donc, GetWindowSubTypeCode (GetFocus ())

 

GetControlID

 

Identifier une fenêtre :

Une fenêtre possède une information qui permet de l’identifier, donc, de la distinguer des autres.

Le contrôle ID est un nombre que le programmeur a utilisé pour marquer les fenêtres de son programme, et s’il ne l’a pas fait, le « Contrôle ID » est un nombre arbitraire.

Pour obtenir cette information, vous devez utiliser la fonction :

GetControlID (), donc, GetControlID (GetFocus ())

 

GetFocus et GetCurrentWindow

 

Contrairement au WINDOW CLASS, le contrôle ID n’a pas de signification particulière. Il est juste un nombre arbitraire qui permet d’identifier une fenêtre. Normalement, dans un même programme, aucune des fenêtres ne doit posséder le même contrôle ID.

En revanche, rien ne garantit que deux fenêtres issues de programmes différents, ne possèdent pas le même contrôle ID.

C’est la raison pour laquelle le système attribue une seconde information d’identification dès l’ouverture d’une fenêtre. Cette information sera attribuée à la fenêtre durant une cession, c’est-à-dire durant son activité. Ainsi, en combinant les 2 identifiants, le système ne pourra pas confondre 2 fenêtres.

Cette information attribuée par le système est appelée WINDOW HANDLE, c’est-à-dire la poignée, il s’agit d’un nombre.

Pour obtenir la poignée d’une fenêtre, vous pouvez utiliser les fonctions :

GetCurrentWindow () Et GetFocus ().

 

Par conséquent, si vous souhaitez que JAWS vous annonce la poignée de la fenêtre qui contient le curseur actif, vous pouvez passer GetCurrentWindow comme paramètre dans SayInteger :

La syntaxe : SayInteger (GetCurrentWindow ())

 

Remarque :

·        La différence qui réside entre ces deux fonctions est que GetFocus ne suit pas le déplacement du curseur JAWS.

 

Getparent et GetFirltChile

 

·  La fonction GetFirltChile retourne la poignée de la première fenêtre enfant de la fenêtre courante ;

·  La fonction Getparent retourne la poignée de la fenêtre parent de la fenêtre courante.

 

Vous pouvez créer un petit script qui vous permettra de lire simultanément ces 2 informations. N’oubliez pas d’assigner un raccourci clavier au script afin de déclencher la lecture de ces 2 informations à partir de n’importe où.

 

Script LecturePoigneeEnfantParent ()

; Dire la poignée de la fenêtre parent

SayInteger (GetParent (GetCurrentWindow ()))

; Dire la poignée de la première fenêtre enfant

SayInteger (GetFirstChild (GetFocus ()))

EndScript ()

 

SayControl et SayWindowTypeAndText

 

Maintenant, je vous propose de tester deux fonctions de lecture.

Le premier, C’est SayControl (), utilisé avec GetFocus en paramètre, il vous lira le nom de la fenêtre courante ;

Le deuxième, SayWindowTypeAndText (), utilisée avec la fonction GetFocus en paramètre, lira le maximum d’informations sur le nom et le type de la fenêtre courante.

 

SetFocus, FindDescendantWindow, GetRealWindow

 

La fonction SetFocus permet d’atteindre une fenêtre. En paramètre, nous allons utiliser la fonction FindDescendantWindow qui nécessite deux paramètres, la fenêtre d’où débute la recherche, et le contrôle ID de la fenêtre recherchée.

Pour le paramètre qui permet de préciser d’où débute la recherche, nous pouvons utiliser la fonction GetRealWindow(GetFocus()) qui indique la première fenêtre réelle parent située hiérarchiquement à un niveau supérieur, et pour la fenêtre à atteindre, le Contrôle ID de la fenêtre, donc du bouton « Ouvrir ».

Voici ce que ça donne :

Script AllerSurBoutonOuvrir ()

setFocus (FindDescendantWindow (GetRealWindow (GetFocus ()),1))

EndScript

 

GetPriorWindow et GetNextWindow

 

Ces 2 fonctions viennent compléter l’emploi de GetFocus, cette fonction dernière retournant le Handle de la fenêtre courante.

·        GetPriorWindow retourne le Handle de la fenêtre précédente, généralement employée avec GetFocus en paramètre ;

·        GetNextWindow retourne le Handle de la fenêtre suivante, généralement employée avec GetFocus en paramètre.

 

Par exemple, pour lire la fenêtre précédente de la fenêtre qui possède actuellement le focus :

SayWindowTypeAndText (GetPriorWindow (GetFocus ()))

Pour lire la fenêtre suivante de la fenêtre qui possède le focus :

SayWindowTypeAndText (GetNextWindow (GetFocus ()))

 

SayWindow

 

Cette fonction permet de lire le nom de la fenêtre pour laquelle le Handle est passé en paramètre.

Par exemple, pour lire la fenêtre courante :

SayWindow (GetFocus (), FALSE)

 

Le second paramètre, 0 ou 1, peut être spécifié par les constantes TRUE et FALSE.

·        TRUE, pour 1, un minimum d’informations sera lu ;

·        FALSE, pour 0, un maximum d’informations sera lu.

 

Par exemple, pour lire la fenêtre précédente de celle qui possède le focus :

SayWindow (GetPriorWindow (GetFocus ()), FALSE)

 

Exercice, lecture automatique du texte de la fenêtre « Découverte du langage script »

 

Revenons à notre application « Encouragement.exe ».

Lorsque la fenêtre est ouverte, le focus est pris sur le bouton « Ok » et le texte d’encouragement présent dans la fenêtre est ignoré.

Voici une solution !

Dans la fonction évènementielle « FocusChangedEvent », nous vérifions si le focus vient d’être pris sur le bouton « Ok » dont le Contrôle ID est 2.

Si tel est le cas, nous forçons la lecture du texte d’encouragement dont le Handle est identifiable grâce à la fonction « GetPriorWindow ».

Ensuite, nous faisons une lecture intégrale du bouton « Ok »…

 

Le code :

; Inclusion des constantes intégrées

Include "HJCONST.JSH"

Void Function FocusChangedEvent (handle FocusWindow, handle PrevWindow)

If GetControlID (GetFocus ()) == 2 Then

  ; Lecture du texte de la fenêtre précédente de celle qui possède le focus

  SayWindow (GetPriorWindow ( GetFocus ()),FALSE)

EndIf

; Lecture intégrale de la fenêtre qui possède le focus

SayWindowTypeAndText (GetFocus ())

EndFunction

 

 


 

Exercice, les fenêtres enfants

 

Pour découvrir une hiérarchie de type « parent-enfants » dans un environnement relativement simple, je vous propose de télécharger la fenêtre suivante :

Cliquez ici pour télécharger container.exe

 

·        Exécuter l’application « Container.exe » ;

·        Une fenêtre apparaît à l’écran, le focus est pris sur le bouton « Ok » ;

·        Activez le mode Home Row et analysez la fenêtre.

 

Liste des fenêtres accompagnées de quelques observations :

1.      La fenêtre principale de l’application est l’actuelle fenêtre réelle, vous pouvez l’atteindre en recherchant la fenêtre « Parent » par le biais du raccourci clavier MAJ +F2. son Contrôle ID est 0, son Nom ? « Découverte du langage script ».

2.      En recherchant la première fenêtre enfant de la fenêtre réelle par le biais de la touche F2, vous trouverez une fenêtre de type « Texte statique «  dont le Contrôle ID est 1. Le texte ?

« Je vous souhaite la bienvenue dans l'apprentissage du langage script, il vous faut seulement un peu de courage ! »

3.      En recherchant la première fenêtre sœur par le biais de la touche « tabulation », vous trouvez un bouton « Ok », son Contrôle ID est 2, c’est lui qui reçoit le focus lorsque la fenêtre est ouverte.

4.      Toujours en recherchant la fenêtre sœur suivante avec « tabulation », vous arrivez sur une drôle de fenêtre dont la classe est « PureContainer » dont le Contrôle ID est 3. Il s’agit d’un rectangle qui encadre plusieurs fenêtres d’un même niveau permettant de mettre à l’évidence un lien entre les différentes fenêtres qu’il renferme.

5.      D’ailleurs, en pressant la touche F2 pour descendre dans la hiérarchie de l’arborescence logique, vous arrivez sur la première fenêtre « enfant » du « Container », il s’agit du bouton « Aide » dont le Contrôle ID est 4.

6.       Avec « tabulation », vous atterrissez sur le bouton « à propos », il s’agit de la fenêtre sœur du bouton « Aide ». Son Contrôle ID ? 5.

 

Voilà, nous avons fait le tour…

 


 

Exercice, prise de focus et lecture d’un texte statique

 

Pour commencer, veuillez télécharger l’application « login.exe » :

Cliquez ici pour télécharger login.exe

 

Après l’avoir téléchargée, exécutez-la…

Maintenant, analysez la fenêtre principale, que constatez-vous ?

·        Lors de l’ouverture de la fenêtre, aucune prise de focus n’est réalisée ;

·        La fenêtre principale est la fenêtre réelle, elle s’intitule « Découverte du langage script », son Contrôle ID est 0 ;

·        La première fenêtre enfant est un texte statique, Class « Static », son nom est « Votre nom », son Contrôle ID ? 1 ;

·        Vers la droite, la fenêtre « sœur » est une zone d’édition dont la classe est « Edit », donc une zone d’édition, son nom est « Votre nom », son Contrôle ID ? 4 ;

·        Toujours vers la droite, La fenêtre « sœur » est un texte statique, Class « Static », son nom est « Login », son Contrôle ID ? 2 ;

·        Vers la droite, la fenêtre « sœur » est une zone d’édition dont la classe est « Edit », donc une zone d’édition, son nom est « Login », son Contrôle ID ? 5 ;

·        Toujours vers la droite, La fenêtre « sœur » est un texte statique, Class « Static », son nom est « Mot de passe », son Contrôle ID ? 3 ;

·        Vers la droite, la fenêtre « sœur » est une zone d’édition dont la classe est « Edit », donc une zone d’édition, son nom est « Mot de passe », son Contrôle ID ? 6 ;

·        A droite, la fenêtre est un « bouton », le Contrôle ID est 7, le nom ? « Ok » ;

·        Pour finir, toujours au même niveau hiérarchique, vous trouverez un texte statique qui devrait être lu à l’ouverture de la fenêtre réelle, mais ce n’est pas le cas… Son Contrôle ID ? 8, son nom ?

« Attention, cette procédure est réservée uniquement aux utilisateurs en possession d'un compte »

 

Voilà, l’analyse depuis le mode Home Row est terminée !

Voici ce que nous devons réaliser :

1.      A l’ouverture de la fenêtre réelle, le message d’avertissement situé dans la partie inférieure de la fenêtre réelle doit être lu, il s’agit d’un texte statique dont le Contrôle ID est 8 ;

2.      Puis, le focus doit être placé dans la zone d’édition « Votre nom » dont le Contrôle ID est 4.

 

Voici le code :

Include "HJCONST.JSH" ; inclusion des constantes intégrées

Void Function AutoStartEvent ()

; Fonction évènementielle qui s'exécute à l'ouverture de la fenêtre réelle

; Lecture du texte statique situé en bas de la fenêtre

SayWindow (FindDescendantWindow (GetRealWindow (GetFocus ()),8), FALSE)

; Prise de focus dans la zone d'édition "votre nom"

setFocus (FindDescendantWindow (GetRealWindow (GetFocus ()),4))

EndFunction

 

Philippe BOULANGER