Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1898 connectés 

  FORUM HardWare.fr
  Programmation
  API Win32

  capturer le texte sélectionné dans n'importe quelle appli

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

capturer le texte sélectionné dans n'importe quelle appli

n°1784551
simaril
Posté le 09-09-2008 à 16:05:55  profilanswer
 

Bonjour
 
un client voudrait qu'on lui développe une application qui tourne en tache de fond et soit capable, sur action utilisateur (combinaison de touches, clic sur une icone systray...) de capturer le texte sélectionné dans n'importe quelle autre application windows et de l'utiliser ensuite dans une activeX dont nous disposons.
 
En fait, c'est pour faire un "clic to call" (numérotation téléphonique). L'ActiveX dispose d'une méthode qui permet de déclencher l'appel, mais il faut l'alimenter avec le numéro de téléphone à composer. Le client voudrait que notre application puisse récupérer ce numéro dans n'importe quelle application windows (sélection par utilisateur d'une zone de texte  quelconque - document office, page web, champs dans un applicatif d'annuaire...- contenant un numéro)
 
Ca serait possible? vous pouvez m'indiquer comment faire?
 
PS: l'appli à créer serait probablement développée en VB, mai c e n'est pas une obligation.

mood
Publicité
Posté le 09-09-2008 à 16:05:55  profilanswer
 

n°1785247
xilebo
noone
Posté le 10-09-2008 à 21:13:51  profilanswer
 

C'est évidemment possible puisque skype le fait déjà, et remplace même n'importe quel texte en une icone cliquable qui numérote automatiquement dans skype.
 
Une piste :  
 
Si tu veux faire ca via une combinaison de touches, regarde du coté des hotkeys (voir doc MSDN).
Sinon, tu peux faire ça de la meme facon que spy++ en survolant simplement les objets graphiques des différentes applications lancées.
 
Sachant que les handles sont publics sous windows, tu pourras récupérer facilement le handle de ta sélection (voir spy++ ou le code source d'un équivalent pour voir comment faire).
 
Ensuite avec ce handle, tu peux tester si l'objet sélectionné (soit parcequ'on a cliqué dessus, soit parce qu'il a le focus) est un objet de type texte, et ensuite tu peux récupérer la sélection courante, et détecter qu'il s'agit d'un numéro de téléphone, et le cas échéant, envoyer celui-ci via un message à ton application.
 
Attention, tu ne peux faire ca qu'avec les objets de l'API win32. Pour un controle entièrement redessiné, il te sera impossible de récupérer simplement le texte. Dans ce cas, il faut être un peu plus rusé, faire une capture d'écran de la zone visée, et faire une analyse OCR sur la bitmap (ex : babylon translate le fait).  
 

n°1785285
simaril
Posté le 10-09-2008 à 21:53:47  profilanswer
 

ok, merci, je vais creuser ces pistes. le coup de la capture+OCR, je l'avais bien iméginé, mais j'oublie : bien trop compliqué.
 
donc on se contentera de l'API win32.

n°1786049
Trap D
Posté le 12-09-2008 à 13:15:15  profilanswer
 

simaril a écrit :

le coup de la capture+OCR, je l'avais bien iméginé, mais j'oublie : bien trop compliqué.

Non pas du tout, c'est plus simple, xilebo t'a indiqué comment faire, et ça fonctionne quelque soit l'appli.


Message édité par Trap D le 12-09-2008 à 13:15:41
n°1786056
xilebo
noone
Posté le 12-09-2008 à 13:41:59  profilanswer
 

La difficulté n'est pas dans la capture d'écran, mais plutot dans l'analyse OCR. Peut-être existe-t-il des bibliothèques toutes faites (open source ou payantes) implémentant déjà la fonction mais je n'en connais pas.
 

n°1786239
Trap D
Posté le 12-09-2008 à 20:43:57  profilanswer
 

J'avis utilisé à l'époque Textract qui est une API payante (elle m'était imposée), mais on en trouve peut-être d'autres gratuites.
Je passais la zone d'écran et la dll se débrouillati toute seule, si la police n'était pas trop exotique et les contrastes corrects, ça marchait bien.

n°1786327
Stephen135
Posté le 13-09-2008 à 10:28:57  profilanswer
 

Il n'y a évidemment pas besoin d'OCR (encore heureux..)
Les diverses méthodes ont été données maintes fois sur le forum pro des apis (news://194.177.96.26/fr.comp.os.ms-windows.programmation)

n°1786355
olivthill
Posté le 13-09-2008 à 12:01:26  profilanswer
 

Malheureusement le lien news..ne marche pas : "Vous n'êtes pas autorisé à accéder à cette rubrique" (depuis mon PC familial sans restriction particulière).
 
J'avais essayé des enumChildWindows(), etc. Effectivement, on récupère des handles de fenêtre, des handles de contrôle, et la position de ces éléments. Mais ce n'était pas évident malgré tout, parce qu'il y a des problèmes du genre : tel élément existe, mais il est invisible, ou bien caché par autre chose, donc il ne faut pas le prendre en compte, ou bien on a le contenu d'un contrôle, mais uniquement de manière globale, et on ne sait pas quelle police est utilisée, et où se trouve précisément chaque caractère.
 
Donc, s'il y a un moyen facile, j'aimerais bien voir un petit exemple.


Message édité par olivthill le 13-09-2008 à 12:02:23
n°2021311
forgotten_​08
Posté le 06-09-2010 à 09:24:43  profilanswer
 

Bonjour,
 
quelqu'un a un bout de code a proposer pour réaliser la capture de texte sous Windows?
 
je suis actuellement sur un problème similaire et je n'arrive pas à le résoudre :)
 
 
cordialement

n°2021403
gilou
Modérateur
Modzilla
Posté le 06-09-2010 à 13:38:50  profilanswer
 

Comme écrit, vas voir dans le groupe de news fr.comp.os.ms-windows.programmation
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le 06-09-2010 à 13:38:50  profilanswer
 

n°2037929
patricktou​lon
Posté le 23-11-2010 à 20:39:10  profilanswer
 

bonjour tu peut capter le handle de la fenetre avec findwindow de la user32.dll
la getwindows text et le setwindowtext de la meme dll
 
enfin les api le font tres bien : :pt1cable:

n°2042044
lsdYoYo
gravity powered
Posté le 14-12-2010 à 15:16:21  profilanswer
 

Autre piste beaucoup plus simple : récupérer le contenu du presse-papier.
Voir les fonction de l'API : http://msdn.microsoft.com/en-us/li [...] 85%29.aspx
 
Après le soft qui récupère les données peut ou non effacer le presse-papier après la récupération.
 
Mais ça demande à l'utilisateur un petit boulot de plus : sélectionner ET copier...


---------------
If I want to fail and succeed, which I have done ?

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  API Win32

  capturer le texte sélectionné dans n'importe quelle appli

 

Sujets relatifs
Isoler un texte avec du regex^pComment utiliser le HOOK pour capturer les messages Windows
Fichiers texte : taille maximale d'une ligne ?Appli Java, Compression gzip des jsp
Problème de superposition de texte sur image[RESOLU] [EXCEL] rechercher un caractere dans un texte
Comment creer et ajouter un "splash screen" au lancement d'une appli?Sélection de texte foireuse sous IE6
une application qui se modifie via XMLInsérer caractère % dans un texte
Plus de sujets relatifs à : capturer le texte sélectionné dans n'importe quelle appli


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR