sebseb42
Messages postés495Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention 9 novembre 2007
-
12 mai 2005 à 20:15
Sabrran
Messages postés6Date d'inscriptionsamedi 26 mars 2005StatutMembreDernière intervention28 janvier 2006
-
15 janv. 2006 à 05:41
Bonjour a tous,
Je voudrais savoir s'il est possible de recuperer du texte selectionner dans une autre fenetre, par exemple j'ouvre le notepad, je tappe bonjour et je selectionne "jour", je voudrais pouvoir recuperer ce texte dans mon application.
C'est un peu primaire comme question mais bon, si vous avez une methode, meme si il faut passer part du code natif en C, n'hesitez, ca me fait meme pas peur d'ailleur c'est sur cette base que je suis partit, mais j'ai encore quelques soucis.
Je vais poser la meme question sur le sites de code-sources C/C++
sebseb42
Messages postés495Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention 9 novembre 20071 12 mai 2005 à 20:17
désolé pour la phrase qui parle du code natif en C, c'est tres con de dire ca ici, c'est parcequ'a la base c'est une question que j'ai poser sur csharpfr, et j'ai oublier de modifier, desoler
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 12 mai 2005 à 20:43
Il faut d'abord que tu retrouve la fenêtre en question, par exemple
avec FinWindow("Notepad", 0) dans ton exemple, puis récupérer l'edit
correspondant avec EnumChildWindows. Tu obtiens donc l'handle d'un
edit, tu peux alors récupérer la sélection en envoyant à l'edit le
message EM_GETSELTEXT
sebseb42
Messages postés495Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention 9 novembre 20071 12 mai 2005 à 22:49
ahh, voila le truc que je cherchais, EM_GETSELTEXT, j'etais pas vraiment sure mais mnt je vais essayer ca...
cependant, j'enumere deja toutes les fenetres, et ensuite j'enumere les childwindow (les sous objets) mais comment savoir le childwindow (parmis tout ceux enumeré) en question est un edit ? et aussi il y a plusieurs sorte de edit non ? et puis par exemple du texte sur une page html n'est pas du texte contenu dans un edit, si ?
voila, le debut etais bien, mais me faut plus de details, merci :)
et ca n'affiche rien, mais par contre ca fait planter certaines des applications auquels j'ai demander de recup le texte selectionné sur ces window enfants (Visual Studio plante directe)
y aurait pas un WM_GETSELTEXT ou un truc du genre ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 12 mai 2005 à 23:21
Tu n'a pas bien la MSDN: quand tu envoies EM_GETSETTEXT, tu dois
fournir un buffer dans lParam, la valeur de retour de SendMessage est
seulement le nombre de caractères copiés, tu ne t'en sers pas forcément:
Pour ce qui est de savoir si une fenêtre est un edit, tu regarde son nom de classe avec GetClassName:
char className[32];
GetClassName(hwnd, className, 32);
if(!lstrcmpi(className, "EDIT"))
{
// C'est un edit
}
La méthode que je donne ne marche que pour les EDIT. Pour une page HTML
par exemple, je pense que c'est tout simplement impossible. Comment
pourrait-on connaitre le texte séléctionné dans une fenêtre dont on
ignore tout, et la manière dont elle a été créée. EM_GETSELTEXT ne
marchera comme son nom l'indique que pour des EDIT (ou les RichEdit),
et pour le reste tu va avoir de grosses difficultés.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 12 mai 2005 à 23:35
Mais comment veux tu par exemple connaitre le texte séléctionné par un
personne dans une fenêtre de Mozilla. Même si tu sais comment faire, il
faut que tu prévoie une solution pour chaque application (beaucoup
d'application utilisent des types de fenêtres qu'elles définissent
elles même et qui ne sont pas documentées)
sebseb42
Messages postés495Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention 9 novembre 20071 12 mai 2005 à 23:42
Dans 99% du temps, tous les programmes utilisent les composant natif Win32, meme certaine lib style GTK ou Qt (je dit juste par exemple car j'avoue ne pas le savoir avec certitude) divent surement surcoucher les controles natif Win32. Java lui, a ses propres controles, mais il y a aussi une partie de la machine virtuelle Java qui utilie les controles natif.
Il est vrai qu'il est possible que le controle de rendu HTML de Mozilla est ete recoder integrallement, et dans ce cas mon programme ne fonctionnera pas, mais c'est pas dramatique, disons que c'est une penaliter acceptable.
Pour le reste, meme un controle de rendu HTML IE ou encore les trucs MSN et compagnie avec des images et tout, si du texte est selectionnable, il doit forcement etre aussi recuperable... maintenant j'admet ne pas savoir comment faire, et c'est aussi pour ca que je poste sur ce site, dans l'espoir que quelqu'un est deja fait ce que j'ai besoin de faire.
len vaut tout le temps zero, j'ai tester en step by step, il y a bien un moment ou le classname contient "Edit", le code va bien sur le memset et le SendMessage, mais len vaut toujours 0, et mon buffer seltext est toujours vide.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 12 mai 2005 à 23:56
Ah oui c'est moi qui t'ai donné une mauvaise information: EM_GETSELTEXT
ne va que pour des RichEdit. Pour un EDIT il n'y a rien de ce genre,
EM_GETSEL te permet de connaitre les indices de debut et de fin de la
sélection. En récupérant tout le texte et en utilisant ces indices tu
peux obtenir le texte séléctionné:
Sabrran
Messages postés6Date d'inscriptionsamedi 26 mars 2005StatutMembreDernière intervention28 janvier 2006 15 janv. 2006 à 05:41
Salut,
Vechio tu m'as fait changé tout mon code en disant que les EDIT prennent EM_GETSELTEXT !! Hehe si je t'écris c'est pas pour me plaindre mais pour te remercier. Je trouvais pas comment faire marcher
EM_GETSEL . Merci! Je confirme que ce code marche.