Statusbar comment recuperer des infos?

noyax Messages postés 10 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 7 janvier 2004 - 18 déc. 2002 à 21:44
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 4 juin 2005 à 20:33
salut, j'aimerai recuperer le texte d'un panel de la statusbar d'une application en execution. Je recupere le handle facilement, puis via ce handle et un sendmessage le texte du 1er panel mais comment faire pour le 2eme, le 3eme, ...?

Merci d'avance.

Noyax

15 réponses

oliversleep Messages postés 58 Date d'inscription vendredi 21 décembre 2001 Statut Membre Dernière intervention 11 mai 2009
19 déc. 2002 à 13:52
Si je me trompe pas, tu devrais utiliser l'appel pour obtenir la valeur text de ta statusbar avec :

label1.caption := statusbar1.panel[nb de ton panel].text;

Ca devrait marcher!!!

Sleep on the World :sleepy)
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
19 déc. 2002 à 21:04
Qu'entends-tu par "d'une application en exécution" ?
S'agit-il d'un TStatusBar de l'application même ou de celui d'une autre application ?

May Delphi be with you
0
noyax Messages postés 10 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 7 janvier 2004
19 déc. 2002 à 21:31
Euh je me suis peut etre mal exprimé, voila en fait c'est le texte d'un statusbar d'une autre appli que la mienne que je veux recuperer. J'ai reussi a recuperer le handle grace a un enumchildwindows avec la classe msctls_statusbar32 et je peux donc recupere le texte du premier panel avec un sendmessage(le_handle_du_statusbar, wm_gettext, 255, integer(@une_variable));

Là où je bloque c'est pour recuperer le texte du 2eme puis 3eme puis... panel.

Merci quand meme pour avoir fait l'effort de me répondre ;)

Noyax
0
noyax Messages postés 10 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 7 janvier 2004
19 déc. 2002 à 21:37
d'une autre application. en recuperant le handle et avec un sendmessage(le_handle, wm_gettext, 255, integer(@variable)); j'arrive à recuperer le texte du 1er panel mais je ne sais pas comment recuperer celui des autres panels... La solution doit etre dans le 1er parametre (255) mais je ne vois pas comment.

Merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
19 déc. 2002 à 22:39
Pour récupérer le texte d'un des panneaux de la statusbar, il faut utiliser le message LB_GETTEXT. Regarde l'aide API à ce sujet. Malheureusement, dans Delphi6 la constante n'est pas définie. Mais voici sa valeur : LB_GETTEXT=WM_USER+2

Dans la message LB_GETTEXT, wParam est le numéro de panel dont on veut le texte ( le premier à le numéro 0 ). Par exemple pour récupérer le texte du deuxième panneau :
SendMessage(StatusBar1.Handle,WM_USER+2,1,Integer(@MonTexte));

--- :sleepy) Nono40@fr.st :sleepy) ---
Nouveau ---> Nono40.fr.st
0
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
19 déc. 2002 à 22:41
Voici le message corrigé ( sorry )

Pour récupérer le texte d'un des panneaux de la statusbar, il faut utiliser le message SB_GETTEXT. Regarde l'aide API à ce sujet. Malheureusement, dans Delphi6 la constante n'est pas définie. Mais voici sa valeur : SB_GETTEXT=WM_USER+2

Dans la message SB_GETTEXT, wParam est le numéro de panel dont on veut le texte ( le premier à le numéro 0 ). Par exemple pour récupérer le texte du deuxième panneau :
SendMessage(StatusBar1.Handle,WM_USER+2,1,Integer(@MonTexte));


> --- :sleepy) Nono40@fr.st :sleepy) ---
> Nouveau ---> Nono40.fr.st
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> >
> > Euh je me suis peut etre mal exprimé, voila en fait c'est le texte d'un statusbar d'une autre appli que la mienne que je veux recuperer. J'ai reussi a recuperer le handle grace a un enumchildwindows avec la classe msctls_statusbar32 et je peux donc recupere le texte du premier panel avec un sendmessage(le_handle_du_statusbar, wm_gettext, 255, integer(@une_variable));
> >
> > Là où je bloque c'est pour recuperer le texte du 2eme puis 3eme puis... panel.
> >
> > Merci quand meme pour avoir fait l'effort de me répondre ;)
> >
> > Noyax
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Si je me trompe pas, tu devrais utiliser l'appel pour obtenir la valeur text de ta statusbar avec :
> > >
> > > label1.caption := statusbar1.panel[nb de ton panel].text;
> > >
> > > Ca devrait marcher!!!
> > >
> > > Sleep on the World :sleepy)
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > salut, j'aimerai recuperer le texte d'un panel de la statusbar d'une application en execution. Je recupere le handle facilement, puis via ce handle et un sendmessage le texte du 1er panel mais comment faire pour le 2eme, le 3eme, ...?
> > > >
> > > > Merci d'avance.
> > > >
> > > > Noyax
> > > >
> > >
> >
>
0
noyax Messages postés 10 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 7 janvier 2004
19 déc. 2002 à 23:19
J'ai delphi 7 et je retrouve le message lb_gettext mais cela ne fonctionne pas... la variable que tu nommes montexte est chez moi du type array[0..255] of char c'est ce qu'il faut?

Merci d'avance

Noyax
0
noyax Messages postés 10 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 7 janvier 2004
19 déc. 2002 à 23:29
Super ca marche bien pour mon appli mais des que je veux faire la meme chose avec une appli exterieure ca ne marche pas et la variable montexte reste desesperement vide :((

Je precise juste que le statusbar (je sais pas si c'est important) possede la classe msctls_statusbar32

Noyax
0
noyax Messages postés 10 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 7 janvier 2004
20 déc. 2002 à 15:46
Alors voilà j'ai trouvé la solution (ou tout au moins le debeut de la solution) là: http://www.experts-exchange.com/Programming/Programming_Languages/Visual_Basic/Q_20360512.html . Et encore merci à toi nono40 qui a révélé l'astuce pour remplacer le sb_gettext par wm_user+2 et merci aussi à tous ceux qui ont répondu. Il y a aussi un pb dans l'exemple avec sb_getparts qui est censé donner le nb de panels et qui ne fonctionne pas non plus mais là cela ne me gene pas.

Noyax

PS: nono40 j'ai vu que tu avais débuté en info avec un oric 1 en 83 pour ma part c'etait avec un oric atmos en 85 ;)
0
noyax Messages postés 10 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 7 janvier 2004
20 déc. 2002 à 16:03
Voici les messages qui manquent:
SB_SETTEXT = (WM_USER + 1) 'Sets text
SB_GETTEXTLENGTH = (WM_USER + 3) 'Returns the text length
SB_SETPARTS = (WM_USER + 4) 'Adds new panels
SB_GETPARTS = (WM_USER + 6) 'Retreives panels
SB_GETTEXT = (WM_USER + 2) 'Returns text

Noyax ;)
0
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
21 déc. 2002 à 01:10
OK merci pour les constantes,

J'avais déjà vu des messages sans réponse ou par l'API certains voulaient récupérer des texte. Le problème était toujours quand le texte ne faisait pas partie de l'application. Et là avec la soution que tu donnes, je viens de comprendre pourquoi. Tous les messages xxx_GETTEXT ne retourne pas le texte directement mais un pointeur de la zone mémoire d'un autre process. Il faut donc mire explicitement cette mémoire avec ReadProcessMemory(). Merci donc à toi pour l'info...

P.S. : mon oric 1 ne fonctionne plus, snif...

--- :sleepy) Nono40@fr.st :sleepy) ---
Nouveau ---> Nono40.fr.st
0
noyax Messages postés 10 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 7 janvier 2004
21 déc. 2002 à 10:38
Si tu ne m'avais pas donné une partie de la solution je chercherai toujours donc c'est à toi que revient tout le merite. En effet c'est a partir d'une recherche par google sur sendmassage et sb_gettext que j'ai enfin trouvé la solution ;)

Merci encore :)

Noyax
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
4 juin 2005 à 15:54
GrandVizir, pourquoi intituler ton message : Espionnage ?
Les posts antérieurs au tien datent de 2002 alors que le code que tu as posté date de février 2005.


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
<
0
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
4 juin 2005 à 17:09
1) "Espionnage" car le code que j'ai proposé a été développé à l'aide de Spy++ (cf Microsoft Visual C++)
2) Si je suis tombé sur cette question, c'est parce que j'ai pris Google pour retrouver le numéro du code que j'ai donné, sachant que je l'ai mis à jour tout à l'heure... Si je passe quelque part, pourquoi serais-je le seul ? Ca pourra toujours aider... enfin j'espère.

===========
ViewVite : HTML
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
4 juin 2005 à 20:33
Ok, vu comme ça on est d'accord
Mais ce n'était pas si évident que cela à comprendre
<
0
Rejoignez-nous