kollibar
Messages postés45Date d'inscriptionsamedi 7 juin 2003StatutMembreDernière intervention31 janvier 2006
-
7 sept. 2004 à 22:33
kollibar
Messages postés45Date d'inscriptionsamedi 7 juin 2003StatutMembreDernière intervention31 janvier 2006
-
9 sept. 2004 à 19:16
bonjour, j ai un pb sur le code suivant(imprime le handle et le nom de toutes les fenetres active a l'écran) au niveau des variables char * titre et char * identifiant au moment d imprimer le resultat a l ecran, la variable identifiant est normal mais la variable titre contient la variable identifiant:
328088:Invite de comman32808
au lieu de
328088:Invite de commande - edit testfen.cpp et la meme chose se produit pour tous mes affichages.
selon moi, les 2 tableaux se recouvrent en memoire, car si je modifie identifiant avant titre, c'est identifiant qui contient une partie de titre.
si qq1 peut m'aider.
au fait j utilise free borland C++ compiler 5.5
#include <windows.h>
#include <string>
#include
void main(void) {
int taille=1; //taille du tableau nom de fenetre
char * titre=(char *) malloc(taille); //alloue un tab de 1char pour le nom de la fenetre(non suffissant)
char * identifiant=(char *)malloc(12); //alloue un tableau de 12char pour l identifiant(tjr suffissant)
HWND handle=GetForegroundWindow(); //handle de la fenetre au premier plan(faut bien commenc? qq part!)
UINT direction=GW_HWNDNEXT; //direction pour la recherche du prochain handle => suivant
while ( handle != NULL ) { //tant qu on a pas epuise tout les handle
handle=GetNextWindow(handle,direction); //recup le handle suivant
if (handle != NULL && IsWindowVisible(handle)) { //tant qu'on a un handle
taille=GetWindowTextLength(handle); //taille du texte de la fenetre
if ( GetWindowTextLength(handle)+1>taille ){ //si la taille n est plus suffisante
taille=GetWindowTextLength(handle); //recup la taille du texte
realloc(&titre,taille); //realloue l espace memoire necessaire
}
GetWindowText(handle,titre,taille); //recupe le texte de la fenetre
identifiant=itoa((long)handle,identifiant,10); //convertit le nø du handle en char *
cout << identifiant << ":" << titre << endl; //affiche l identifiant et le titre de la fenetre
}
else if (direction==GW_HWNDNEXT) { //si plus de handle ds la direction 'suivant'
direction=GW_HWNDPREV; //change la direction('precedent')
handle=GetForegroundWindow(); //repart du meme endroit(fenetre au premier plan)
}
}
}
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011 9 sept. 2004 à 16:42
ric> pense ce que tu ve; je detaille un fait, C tt
djl>
bs dit de ne pas utiliser malloc/free en c++ car pas definition tous les types sont des objets et seuls new/delete et new[]/delete[] construisent/detruisent les objets
parfaitement d'accord
mé vs autres qui etes a fond perf,
la copie systématique ne genere pas une perte de tps & de ressources?
Magic Nono: l'informagicien! 8-)
Vous n’avez pas trouvé la réponse que vous recherchez ?