Page 1 sur 1

[R] Récuperer une valeur affichée dans une StatusBar

Posté : mer. 05 août 2015 18:33
par AngelDouche
Bonjour a tous,

Je suis débutant dans le script Autoit, c'est pour cela que j'aurais besoin d'un petit coup de main.

J'aimerais pouvoir récuperer des valeurs affichés dans une StatusBar :
► Afficher le texte
Voici les info données par le Windows Info :
► Afficher le texte
Puis j'aimerais recuperer les deux valeur séparément dans deux variables.

Est-ce que vous auriez une petite idée de comment je pourrais m'y prendre ?

Merci beaucoup,
Bonne journée

Re: [..] Récuperer une valeur affichée dans une StatusBar

Posté : jeu. 06 août 2015 13:32
par mikell
ControlGetText() et fonctions String*

Re: [..] Récuperer une valeur affichée dans une StatusBar

Posté : jeu. 06 août 2015 14:12
par jguinch
Ou _GUICtrlStatusBar_GetText

Re: [..] Récuperer une valeur affichée dans une StatusBar

Posté : ven. 07 août 2015 16:02
par AngelDouche
Bonjour,

Merci de m'avoir répondu.

J'ai essayé avec la fonction ControlGetText :

Code : Tout sélectionner

$TEXTE = ControlGetText ( "[CLASS:msctls_statusbar32; INSTANCE:1]", "", "[ID:59426]" )

Msgbox(0,"Afficher la variable TEXTE", $TEXTE )

Mais ma variable $TEXTE ne contient rien.
Purriez vous m'aider ?

Merci beaucoup

.

Re: [..] Récuperer une valeur affichée dans une StatusBar

Posté : ven. 07 août 2015 21:00
par jguinch
Est-ce que tu as essayé ma proposition ?

Re: [..] Récuperer une valeur affichée dans une StatusBar

Posté : ven. 07 août 2015 22:43
par orax
Il y aussi StatusbarGetText() à essayer (ne marche que pour les contrôles standards "msctls_statusbar32").

Code : Tout sélectionner

; Testé avec SciTE
#include <GuiStatusBar.au3>
ConsoleWrite(ControlGetText('[CLASS:SciTEWindow]', '', 353) & @CRLF)
ConsoleWrite(ControlGetText('[CLASS:SciTEWindow]', '', '[CLASS:msctls_statusbar32]') & @CRLF)
ConsoleWrite(StatusbarGetText('[CLASS:SciTEWindow]') & @CRLF)
$hStatusBar = ControlGetHandle('[CLASS:SciTEWindow]', '', '[CLASS:msctls_statusbar32]')
ConsoleWrite(_GUICtrlStatusBar_GetText($hStatusBar, 0) & @CRLF)

Re: [..] Récuperer une valeur affichée dans une StatusBar

Posté : ven. 07 août 2015 23:02
par mikell
AngelDouche a écrit :J'ai essayé avec la fonction ControlGetText :

Code : Tout sélectionner

$TEXTE = ControlGetText ( "[CLASS:msctls_statusbar32; INSTANCE:1]", "", "[ID:59426]" )
Mais ma variable $TEXTE ne contient rien.
Moui, et si tu essayais

Code : Tout sélectionner

$TEXTE = ControlGetText ( "titre_de_la_fenetre", "", "[CLASS:msctls_statusbar32; INSTANCE:1]" )
en suivant cette fois la syntaxe indiquée dans le fichier d'aide ?

Re: [..] Récuperer une valeur affichée dans une StatusBar

Posté : ven. 07 août 2015 23:22
par jguinch
orax a écrit :Il y aussi StatusbarGetText() à essayer
:oops: Je l'avais jamais vu celle-là :shock:

Re: [..] Récuperer une valeur affichée dans une StatusBar

Posté : sam. 08 août 2015 13:20
par AngelDouche
Merci a tous d'avoir répondus !

Malheureusement, peux importe la fonction que j'utilise, ça me renvois un texte vide.

J'ai essayé ces fonctions sur une fenêtre d'HyperTerminal pour essayer, et cela à bien marché. (Donc peu de chance que je me sois trompé dans la syntaxe).

Par contre, avec HyperTerminal ces fonction ne me renvoient qu'une partie de la StatutBar (voir image)
► Afficher le texteImage de la StatutBar d'HyperTerm
En effet cela me renvoi "Déconnecté" mais pas les autres éléments de la StatutBar, ("Détect. auto", etc).

Or sur le logiciel ou je souhaite utiliser ces fonctions, c'est la 3eme "partie" de la StatutBar qui m'intéresse, la première "partie" étant vide. (D'où mon $Texte = " ").

Quelqu'un aurait t'il une solution ?


Je suis qu'un novice avec Autoit, j'ai commencé la semaine dernière. Désolé si je comprend pas tout du premier coup :mrgreen:

Merci encore ! :wink:



PS: jguinch je n'ai pas pu essayer ce que tu m'as proposé que je ne sais pas du tout comment utiliser (_GUICtrlStatusBar_GetText) =/

Re: [..] Récuperer une valeur affichée dans une StatusBar

Posté : sam. 08 août 2015 17:10
par mikell
Si l'infotool retourne la même id de controle pour toutes les parties de la statusbar, ça vaudrait le coup d'essayer un truc comme ça

Code : Tout sélectionner

#include <GuiStatusBar.au3>

$hStatus = ControlGetHandle("titre_de_la_fenetre", "", "[CLASS:msctls_statusbar32; INSTANCE:1]")
$aParts = _GUICtrlStatusBar_GetParts($hStatus)
Local $txt
For $i = 0 to $aParts[0]
   $txt &= _GUICtrlStatusBar_GetText($hStatus, $i) & @crlf
Next
Msgbox(0,"", $txt)

Re: [..] Récuperer une valeur affichée dans une StatusBar

Posté : sam. 08 août 2015 17:59
par AngelDouche
Merci mikell ça marche a merveille !!

Par contre peux tu m'expliquer ton bout de code ? :wink:

Car c'est bien beau ça marche ! Mais je vois pas du tout comment ^^

En tout cas merci beaucoup !

Re: [R] Récuperer une valeur affichée dans une StatusBar

Posté : sam. 08 août 2015 18:50
par blacksoul305
Bonjour,

mikell a en effet suspecté une "statuts bar" en plusieurs parties, qui chacune affiche un texte : "Déconnecté, Détec. Auto" etc...
Son idée était donc de prendre une variable ($txt), et d'y ajouter le texte de chacune des "statuts bar" (l'ajout se fait par l'opérateur &=)

__GUICtrlStatusBar_GetParts($hStatus) => renvoie un tableau contenant toutes les parties composant la "statuts bar"
_GUICtrlStatusBar_GetText($hPart) => renvoie le texte affiché dans la partie $hPart
$txt &= $data => ajoute le texte contenu dans $data à la suite du texte contenu dans $txt, et tout ça stocké dans $txt.

L'utilisation de la boucle "for" assure bien qu'on récupère le texte pour chaque partie de la "statuts bar".

Re: [R] Récuperer une valeur affichée dans une StatusBar

Posté : sam. 08 août 2015 19:34
par mikell
Très juste Image
En fait le code ne sert qu'à vérifier qu'on a bien affaire à une statusbar en plusieurs parties
Ceci devrait donc suffire :

Code : Tout sélectionner

$txt_part_3 = _GUICtrlStatusBar_GetText($hStatus, 2)