Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Lire Texte d'une fenetre windows [ Archives / Au secours ] (nomlingote)

jeudi 29 septembre 2005 à 14:45:55 | Lire Texte d'une fenetre windows

nomlingote

Bonjour à tous, J'utilise Dev C++ comme environnement. Je souhaite faire une application console qui puisse lire le contenu des TEXTBOX , RICHEDIT... d'une fenetre windows. Le but est de recuperer tout ce qu'il y a comme text dans un textbox ou autres controles de l'application Windows par exemple et le faire analyser par l'application console. Pour être precis, si l'application windows affiche un texte dans une zone quelconque de la fenetre, le programme (console) devrait pouvoir aller lire ce texte affiché par l'application windows. Merci de votre aide.

jeudi 29 septembre 2005 à 14:46:37 | Re : Lire Texte d'une fenetre windows
jeudi 29 septembre 2005 à 17:47:35 | Re : Lire Texte d'une fenetre windows

julienbj


Recupere le handle de la fenetre dans laquelle tu veux récpérer le texte.
FindWindow
Puis, récupère le handle des composants de la fenetre. (A coup de EnumChildWindow)
Sinon, tu peux aussi récupérer les ID des composants que tu veux en faisant un prog de test qui écrit sur chaque composant de ta fenetre la valeur de l'ID:

UINT i;
char buffer[30];

for (i = 0; i < MAXID; i++)
    SendDlgItemMessage(hParent, i, WM_SETTEXT, 0, itoa(i, buffer, 10));


Selon la méthode effectuée, tu as soit le handle du composant, soit l'identifiant du composant, et avec ça, tu as le handle de la fenetre.
1.-Handle du composant:
Utilise la fonction SendMessage avec le bon message pour récupérer le texte du composant
Ex: Récupérer le texte afficher sur un bouton dont le handle est contenu dans hButton:
char buffer[256];
SendMessage(hButton, WM_GETTEXT, 255, buffer);

2.-ID du composant:
Utilise la fonction SendDlgItemMessage pour envoyer un message au composant.
Ex: Récupérer le texte du bouton d'identifiant IDButton dans la fenetre de handle hParent
char buffer[256];
SendDlgItemMessage(hParent, IDButton, WM_GETTEXT, 255, buffer);

Vive le C
Tchao
Savon

vendredi 30 septembre 2005 à 06:58:21 | Re : Lire Texte d'une fenetre windows

nomlingote

salut julienbj, J'ai essayé votre sugesstion sans succes; j'ai eu un probleme avec la conversion de type dans la fonction SendDlgItemMessage() Exemple 2. Je serai plus à l'aise avec les handle des composants de la fenetre. Si vous voulez bien me donner un exemple détaillé avec la fonction EnumChildWindow (). Merci de votre aide.

vendredi 30 septembre 2005 à 10:00:51 | Re : Lire Texte d'une fenetre windows

julienbj

Je veux bien te faire un exemple, mais la solution 2 me parait de loin la plus facile à mettre en place.
Pourquoi je dis ca?
Parcque EnumChildWindow va t'énumérer tous les composants d'une fenetre. Alors comment savoir lequel tu veux récupérer? J'ai quelques idées, mais elles sont assez tordues pour l'instant.

Pour la solution 2, je comprends pas ce que tu appelles un probleme de type.
Je vais essayer d'etre un peu plus clair sur ce qu'il faut que tu fasses.
Il faut que tu crées un second programme (qui ne sera lancé qu'une fois par toi).
Dans ce programme, tu demandes à chaque composant d'afficher son identifiant.
Pour cela, tu parcours tous les identifiants possibles et tu envoies le message SETTEXT par exemple. Avec comme chaine à afficher, la chaine contenant la valeur de l'identifiant.
La, tu regardes le composant que tu veux commander à partir de ta vrai application, et tu notes son identifiant en #define.
Apres, ben tu n'as plus qu'à le commander.

Mais explicite un peu l'erreur de type STP.
Je pense tu n'as pas du mettre les bonnes choses dans ton SendDlgItemMessage.

Vive le C
Tchao
Savon

vendredi 30 septembre 2005 à 10:02:57 | Re : Lire Texte d'une fenetre windows

julienbj

J'ai oublié:
Pour passer de l'identifiant au handle, tu peux utiliser la fonction: GetDlgItem
Pour passer du handle à l'identifiant, utilise la fonction GetWindowLong avec le parametre GWL_ID.

Vive le C
Tchao
Savon

vendredi 30 septembre 2005 à 10:11:14 | Re : Lire Texte d'une fenetre windows

julienbj

Réponse acceptée !
Sinon, une autre idée qui me vient comme ca.
Pour récupérer l'identifiant du composant que tu veux commander, utilises spy++.

Tu vas peut etre te demander pourquoi je parle toujours de l'ID plutot que du handle.
C'est parcque l'ID ne varie pas. A chaque fois que tu lances une application son handle ainsi que celui de ses composants est réaffecté, alors que les ID restent identiques.

Avec spy++, tu vas dans le menu Spy/Find Window.
La, avec l'outil de recherche, tu sélectionnes le composant que tu souhaites commander.
En cliquant sur le bouton OK (case Properties cocher), tu vas voir toutes les proprietes du composant, dont son identifiant.
C'est encore plus simple que mon premier exemple.

Vive le C
Tchao
Savon

vendredi 30 septembre 2005 à 12:22:33 | Re : Lire Texte d'une fenetre windows

nomlingote

Salut, J'avais intégré directement tes suggestions à mon prog, mais en faisant un autre programme pour ecrire sur les composants de la fenetre j'ai pu corriger mon erreur. (j'avais déclaré buffer[] comme int.) Parfait je retiens le ID comme valeur de reference Ca rend le programme moins lourd en effet. C'est fou ce qu'on peut faire avec du C. Je vais quand meme regarder les fonctions GetDlgItem et GetWindowLong. On ne sait jamais ... Merci pour l'aide.



Cette discussion est classé dans : application, texte, lire, windows, fenetre


Répondre à ce message

Sujets en rapport avec ce message

Application windows sans fenetre [ par LordDaedalus ] BonjourJe cherche à faire une application windows en Visual CPP qui n'apparait pas à l'écran ni dans la barre de tache.Bref une appli Windows sans fen Affichage texte sous windows [ par macros ] Bonjour a tous !!Je voudrais savoir comment on peut afficher du texte dans une fenetre windows en C car je voudrais faire une sorte de log de mon prog Win32 et les fichiers [ par platon179 ] Bonjour, j'ai un petit souci pour lire les fichiers texte sous windowsComment faut-il faire pour lire une seule ligne complète d'un fichier texte, un windows application [ par brownfire ] bonjours je sais que ma question est bête mais je n'ai pa d'autre choix que de demander a des gens qui en savent beacoup plus que moi sur le c++ ma qu creer une fenetre en mode texte [ par D3m3T05 ] bonjour. je vien de commencer le C++ et je voudrait savoir s'il serait possible dans un invite de commande de creer une petite fenetre d'executin, je aide windows application [ par chinois57 ] bjr cette question peut parraitre stupide mais bon comment faiton pour afficher un texte dans une fenetre windows applicatios    j'utilise devC++ Application Windows C [ par RM50Man ] Comment on fait pour savoir si on a appuier sur un bouton qui se situe ds la fenetre principale.Par exemple, si le bouton est ds une dialog on le recu Lire et écrire un fichier .txt avec du C [ par Hkz ] Bonjours a tousJ'ai codé un programme qui code du texte, mais pour l'instant il faut lui rentrer le texte par le clavier se qui n'est pas très pratiqu Widget comme l'application "Add/Remove programs" de windows [ par tibouz ] Bonjour ! Je cherche le widget (windows forms) pour creer une liste comme celle de l'application "Add/Remove Programs" integree dans windows. Si q une fenetre avant l'application [ par progrima ] Salut tout le monde!! j'ai réaliser une petite applaication mfc. ce que je veux ajouter, c'est avant le lancement de l'application, une petite fenetr


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,919 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.