kesakoa
Messages postés10Date d'inscriptionlundi 22 décembre 2008StatutMembreDernière intervention 9 mars 2009
-
13 févr. 2009 à 17:33
kesakoa
Messages postés10Date d'inscriptionlundi 22 décembre 2008StatutMembreDernière intervention 9 mars 2009
-
19 févr. 2009 à 01:21
Bonjour à tous,
J'ai fait une application sous visual c++ qui permet de travailler sur une fenêtre internet. Elle permet d'automatiser des taches, l'application clique et/ou écris automatiquement en fonction de la couleur de certains pixels de la fenetre. Ca marche bien mais je suis obligé de laisser ma fenetre internet au premier plan.
Je viens à vos lumières parce que je voudrais que mon application puisse travailler sur la page internet en arrière plan.
Pour ca j'ai besoin de pistes sur deux points,
1/ Comment capturer la couleur de pixels d'une fenetre en arriere plan?
Est ce que je peux faire un genre de capture d'ecran d'une fenetre non visible?
2/ Comment puis-je cliquer sur des elements d'une fenetre en arriere plan?
Pour l'ecriture je pensais passer par des messages, est ce que ca vous parait judicieux? est ce que ca marche aussi pour les clics souris?
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 13 févr. 2009 à 22:52
Salut,
1/ Tu peux essayer WM_PRINTCLIENT. Mais ça risque de ne pas fonctionner. Je ne crois pas qu'il y ait de méthodes miracle pour récupérer une impression écran 5ou un pixel...) d'une application cachée par une autre.
2/ Oui, PostMessage. Tu devrais trouver les messages ici. Tu peux utiliser spy++ fourni avec Visual Studio pour voir les messages postés à une application sur laquelle tu cliques.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 14 févr. 2009 à 22:32
Salut,
Il est possible de capturer une fenêtre cachée par une autre en utilisant PrintWindow().
Elle prend comme 2ème paramètre un HDC destination sur lequel sera
dessinée la fenêtre cible. Ce HDC sera de préférence en mémoire. Ainsi,
on peut récupérer les couleurs des pixels sans problème. Exemple:
HWND fenetrecible=FindWindow(0,"Titre de la fenêtre");
Racpp, quand je compile avec PrintWindow, j'ai l'erreur de compilation suivante: error C3861: 'PrintWindow' : identificateur introuvable.
Le "handle" est bon, je m'en servais avant avec succés. Le memdc m'a l'air bon aussi et le dernier paramètre ne change rien qu'il vaille 0 ou NULL. Je bloque la dessus. C'est probablement une erreur bête mais je la vois pas!
Rt15, quand j'utilise WM_PRINTCLIENT, ca compile, sauf que j'obtiens une image bmp noir sur toute la dimension de ma fenetre... J'ai cherché ce problème avec google, j'ai trouvé que ca pourrait marché "en récupérant la 2ème fenêtre "MozillaWindowClass"
et en la mettant par ex dans un Static (SetParent()) puis
PrintWindow() sur la fenêtre parente du Static." J'essaye ca mais ca complique bien les choses, j'ai pas tout compris, ca prend du temps a mettre en oeuvre. Est ce que ca parait être une piste valide?
Sinon j'ai oublié de préciser, je travaille avec Visual C++ 2005 Express. Je suis sous windows xp sp3. La bibliotheque user32 est linké au projet, le header windows.h déclaré...
Vous n’avez pas trouvé la réponse que vous recherchez ?
kesakoa
Messages postés10Date d'inscriptionlundi 22 décembre 2008StatutMembreDernière intervention 9 mars 2009 19 févr. 2009 à 01:21
merci racpp, tu as raison, printwindow est maintenant reconnu.
J'ai le même problème que pour wm_printclient, je ne vois qu'un écran noir mais j'y travaille.