StatusBar, SendMessage et SB_GETTEXT [C, C++] - C++ - Programmation
Marsh Posté le 21-09-2002 à 11:00:28
| youdontcare a écrit a écrit  : WM_GETTEXT ? | 
c'est ce que précise ton lien ...  
 
 
a priori, c'est toujours WM_GETTEXT pour récupérer le texte d'une fenêtre, sauf si celle-ci contient plusieurs éléments de texte (comme une listbox).
Marsh Posté le 21-09-2002 à 11:01:26
Oui mais WM_GETTEXT ne donne que le texte dans l'index 0 de la StatusBar 
Marsh Posté le 21-09-2002 à 11:04:25
Je parle de celui-ci : 
| Citation :   | 
 
 
Et celui-ci : 
| Citation :   | 
Marsh Posté le 21-09-2002 à 11:09:16
ça devrait effectivement marcher avec SB_GETTEXT. tu as regardé avec spy++ si la status bar avait des fenêtre filles ?
Marsh Posté le 21-09-2002 à 11:48:24
MMhhmm attend ... Non elle n'a pas de fenêtre fille  
 
 
J'ai oublié de dire ... je suis sur Borland C++ Builder ( je pense que WinSight c'est la même chose que Spy++  )
 ) 
 
Et pour revenir à mon problème je pense que SB_GETTEXT me retourne l'adresse en memoire du texte et non le texte ...
Marsh Posté le 21-09-2002 à 12:10:11
| strikenet a écrit a écrit  : Et pour revenir à mon problème je pense que SB_GETTEXT me retourne l'adresse en memoire du texte et non le texte ... | 
cf la doc : http://msdn.microsoft.com/library/ [...] ettext.asp 
 
tu dois spécifier le buffer à remplir. il y a SB_GETTEXTLENGTH qui retourne la taille nécessaire. déjà, ce message renvoie-t-il une valeur cohérente ? 
 
poste ton code, j'ai l'impression qu'il y a plutôt un problème de buffer.
Marsh Posté le 21-09-2002 à 13:28:33
J'ai simplifié le code pour mes tests : 
| Code : 
 | 
Marsh Posté le 21-09-2002 à 13:48:47
>> nbCaractere = LOWORD(SendMessage(Handle, SB_GETTEXTLENGTH, 0, 0)); 
 
ça marche ? ça marche comment, il y a un opérateur de conversion int -> AnsiString ? 
 
>>  SendMessage(Handle, SB_GETTEXT, 0, (LPARAM)Element.c_str()); 
 
là aucune idée, je ne connais pas AnsiString. tu devrais essayer avec un bon vieux char* des familles : 
 
int numChars = LOWORD(SendMessage(Handle, SB_GETTEXTLENGTH, 0, 0)); 
char* buffer = new char [numChars]; 
buffer[0] = 0; // cf la doc 
int numChars2 = LOWORD(SendMessage(Handle, SB_GETTEXT, 0, buffer)); 
 
MessageBox(NULL, buffer, NULL, 0); 
 
et regarde si numChars == numChars2. 
 
// 
  ha, et je viens de remater le topic que tu as filé : si tu veux lire le texte d'une autre application, passer directement un pointeur n'est pas possible : il n'est valide que dans ton app. il y a un bout de code avec OpenProcess & co en bas.
 ha, et je viens de remater le topic que tu as filé : si tu veux lire le texte d'une autre application, passer directement un pointeur n'est pas possible : il n'est valide que dans ton app. il y a un bout de code avec OpenProcess & co en bas.  
 
(WM_GETTEXT a le même problème, mais c'est patché en interne pour la compatibilité descendante ...  )
)
Marsh Posté le 21-09-2002 à 15:32:58
Quand je met : char* buffer = new char [numChars]; 
numchars2 = 0 
 
Avec AnsiString numchars=numchars2  
 
 
Personne n'a d'idée ![[:zoutte] [:zoutte]](https://forum-images.hardware.fr/images/perso/zoutte.gif) 
 
Marsh Posté le 21-09-2002 à 15:37:24
| strikenet a écrit a écrit  : Personne n'a d'idée ![[:zoutte] [:zoutte]](https://forum-images.hardware.fr/images/perso/zoutte.gif)  | 
si c'est une autre app, il faut faire openprocess() & co. cf message précédent qui cf au thread.
Marsh Posté le 21-09-2002 à 10:56:18
J'aimerais récupurer le contenue d'une StatusBar.
 
 
 
 
J'ai essayé la même méthode que pour les listbox avec SB_GETTEXT mais ça n'a pas l'air d'être pareil ...
Et pourtant j'arrive à changer la couleur grace à SB_SETBKCOLOR
J'ai trouvé un topic sur ce sujet mais c'est en Delphi
-> http://www.experts-exchange.com/Pr [...] 09741.html
Si quelqu'un c'est comment faire
@+