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

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
AngelDouche
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mer. 05 août 2015 11:37
Status : Hors ligne

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

#1

Message 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
Modifié en dernier par AngelDouche le sam. 08 août 2015 17:59, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

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

#2

Message par mikell »

ControlGetText() et fonctions String*
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#3

Message par jguinch »

Ou _GUICtrlStatusBar_GetText
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
AngelDouche
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mer. 05 août 2015 11:37
Status : Hors ligne

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

#4

Message 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

.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#5

Message par jguinch »

Est-ce que tu as essayé ma proposition ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

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

#6

Message 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)
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

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

#7

Message 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 ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#8

Message par jguinch »

orax a écrit :Il y aussi StatusbarGetText() à essayer
:oops: Je l'avais jamais vu celle-là :shock:
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
AngelDouche
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mer. 05 août 2015 11:37
Status : Hors ligne

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

#9

Message 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) =/
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

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

#10

Message 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)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
AngelDouche
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mer. 05 août 2015 11:37
Status : Hors ligne

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

#11

Message 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 !
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

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

#12

Message 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".
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

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

#13

Message 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)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre