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

  FORUM HardWare.fr
  Programmation

  [C++] Obtention du contenu de la fenêtre active

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Obtention du contenu de la fenêtre active

n°21595
Drums
Posté le 31-03-2001 à 08:15:31  profilanswer
 

Je voudrais faire un exe qui récupère périodiquement le contenu texte de la fenêtre active, que ce soit une fenêtre Word, notepad, excel, IE, etc. Savez-vous comment faire ça ? Je suis bon en C++ mais je débute en Windows. Faut-il regarder du côté des MFC ou du Windows SDK ?
 
Merci d'avanc

mood
Publicité
Posté le 31-03-2001 à 08:15:31  profilanswer
 

n°21601
Flying
Posté le 31-03-2001 à 09:54:49  profilanswer
 

Heu à mon avis il faut récupérer un pointeur sur le controle en question mais ca doit pas être évident.
J'ai déjà vu un exemple d'un programme qui écrivait dans le notepad grace à un pointeur sur le controle d'édition du notepad ...
Il y a peut être une autre solution moins barge :))
 
Flying

 

[edit]--Message édité par Flying--[/edit]

n°21634
xilebo
noone
Posté le 31-03-2001 à 21:16:43  profilanswer
 

Chaque controle sous windows ( zone de texte ,liste ,arbre , bouton , etc ...) possède un handle(ce que tu appelle le pointeur) PUBLIC à toutes les applications. C'est avec ce handle et quelques fonctions windows ( SetWindoText , etc ...) que l'on peut manipuler les fenetres. Ainsi , si tu arrives à récupérer le handle de word ou notepad ( enfin je veux dire le handle de la zone de texte puisque c'est ca qui t'interesse), tu peux, par le biais des fonctions win32, manipuler à volonté ces fenetres , tu peux les redimensionner , les cacher, changer les propriétés ( ex : le controle qui sert à taper un mot de passe et qui fait apparaitre des '*'  à la place de ce qu'on tape , bah la plupart du temps c'est une editbox , il suffit de récupérer son handle et de changer la propriété password !) .
 
Le plus "dur" , c'est de récupérer ce handle. Tu peux tres facilement en utilisant le programme spy++ fourni avec visual studio mais c'est une opération manuelle. Sinon , il existe des fonctions windows du genre GetWindowFromPoint() qui permet de retourner le handle de la fenetre sous le pointeur de souris.
 
Malheureusement, la routine qui permettra de faire ca sera ecrite dans un programme, et cette fonction ne fonctionnera que si ce programme est actif, autrement dit, tu ne pourrais t'en servir que si ton programme avait la main ( pas interessant puisque tu veux le handle du controle actif).
 
Neanmoins, il existe un moyen d'avoir un programme en tache de fond toujours actif mais actuellement je ne sais pas comment faire . D'ailleurs si quelqu'un sait ce serait bien de dire comment faire !! ( ca doit pas etre bien dur, le tout c'est que l'application doit récupérer les messages souris meme si elle n'est pas active  genre le message WM_NCMOUSEMOVE mais chui pas sur que c'est celui la !).

n°21664
verdy_p
Posté le 01-04-2001 à 13:39:52  profilanswer
 

Si j'ai bien compris, il s'agit de trouver un programme qui espionne tout ce que tape ou lit un utilisateur...
Pour trapper le clavier, c'est pas compliqué: un Windows Hook que tu ajoute à la fenêtre que tu veux étudier.
Pour connaitre la fenêtre active, Windows te l'indique par une fonction de base.
Par contre pour savoir ce que lit l'utilisateur, tout dépends de la méthode d'affichage employée.
En pratique on ne se complique pas autant, et on a juste beoin de faire un snapshot (avec une solution du genre de Norton pcAnywhere, qui permet de prendre le contrôle d'un PC à distance ou surveiller ce qui s'y passe...)

n°21728
Drums
Posté le 02-04-2001 à 09:58:54  profilanswer
 

Merci. Bon d'après ce qu'on m'a dit jusqu'à présent, le pb est que le ctrl de chaque fenêtre est différent suivant l'appli et que donc il faudra faire un cas particulier pour chaque appli (word, etc.)
 
Pour ce qui est du pb de ne pas choper la propre fenêtre du pg comme fenêtre active, je pense qu'il suffit d'en rendre uneautre active et de passer par un thread avec un timer qui testera régulièrement la fenêtre active en tâche de fond.
 
Bon je vais voir...


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

  [C++] Obtention du contenu de la fenêtre active

 

Sujets relatifs
[JS] nommer une fenetre??Comment interdir sous apache la lecture du contenu des repertoires?
HTML = aliminer l'espace entre le bord des fenetre et le texte/imagesVB6 : empecher de redimensionner une fenetre ...
ouverture ds une nouvelle fenetre....[VBSCRIPT] comment connaitre le contenu d'un dossier ?
Active X AgainProbleme avec composant Active X
[HTML / Javascript ] Virer les boutons de la fenetre COURANTEfermeture de fenetre sous VB
Plus de sujets relatifs à : [C++] Obtention du contenu de la fenêtre active


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