FAIRE UN APERÇU DES APPLIS / FICHIERS OUVERTS DANS UNE FORM AVEC L'API PRINTWIND

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 8 mars 2007 à 07:39
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 2 juil. 2008 à 23:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/41785-faire-un-apercu-des-applis-fichiers-ouverts-dans-une-form-avec-l-api-printwindow

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
2 juil. 2008 à 23:38
Pour les admins :

comment est-il possible que mon code soit + téléchargé que vu ???
Vu / téléchargé: 3 705 / 5 497

(suis curieux) :)

++
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
13 mars 2007 à 00:43
Madm@tt> Je suppose qu'il s'agit d'effectuer une copie d'écran de la fenêtre avant qu'elle ne se réduise (en interceptant le message de réduction de la fenêtre je suppose). Mais bon, tu ne vas pas voit la fenêtre s'actualiser.

Ensuite, à la place d'afficher le tooltip habituel, tu affiches l'image de la fenêtre. Bon je ne sais pas comment faire mais ça doit être une histoire de subclassing...

Le logiciel c'est Visual Task Tip. Ca m'intéresse de savoir comment ça marche exactement si tu trouves..

++
Moustachu
apxa Messages postés 188 Date d'inscription mercredi 15 mai 2002 Statut Membre Dernière intervention 25 avril 2009
12 mars 2007 à 21:39
Salut,
En fait le problème est quand la fenetre est caché voir en mémoire

Pour vous aiguillez, c'est possible avec les API
GetObjectAPI, CreateCompatibleDC, CreateDIBSection, SelectObject, GetDesktopWindow, ReleaseDC, BitBlt, DeleteDC, CopyMemory, ijlWrite (pour le jpg)

Après le problème c'est pour le handle, dans mes recherches le handle s'avère être un webbrowser.
Donc déjà c'est la merde (pour ce qui connaissent bien ce composant).
Première merde rencontré handle non existant (remedié par une copie en mémoire dans un picturebox)
Deuxième merde rencontré la fonction js document.focus d'une page web qui renvois une capture vide.

Je n'ai pas le temps de revoir cela mais dès que j'aurais quelque chose de nouveau je vous le ferais savoir.

Sinon y a en .net le composant webbrowser qui gère la capture en image mais ce qui m'interresse c'est une solution vb6.

Have Fun
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
12 mars 2007 à 20:48
Salut Moustachu, sous XP c'est possible ? ça m'interesse, t'aurais pas le nom du logiciel (ou meme une idée de la technique utilisée héhé ^^ ?) Merci
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
12 mars 2007 à 08:40
Bonjour,

C'est sympa comme source. Sous vista je ne sais pas comment cela fonctionne mais sous XP, je sais qu'il existe des programmes qui montre la miniature de la fenêtre lorsqu'elle est réduite. Elle n'est disponible que lorsque la fenêtre a été affichée.

Moustachu
apxa Messages postés 188 Date d'inscription mercredi 15 mai 2002 Statut Membre Dernière intervention 25 avril 2009
10 mars 2007 à 13:23
Salut,
En Effet j'en ai fait un aussi basé sur les differents moyens de faire des captures par handle (notament pour des pages web) via le composant webbrowser, picturebox et handle mais pour certaines url mais sur certaine url je suis faussé par du js lost.focus

Have Fun.
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
10 mars 2007 à 12:22
Salut,

non car j'utilise la vérification (dans la classe) par IsWindowVisible (api). Il te suffit de modifier le paramètre, mais cela risque de poser problème avec certains processus ayant un handle
apxa Messages postés 188 Date d'inscription mercredi 15 mai 2002 Statut Membre Dernière intervention 25 avril 2009
9 mars 2007 à 20:36
Salut,
Est ce que ton code pourrais géré des applis qui seraient non visible à l'ecran (en mémoire) ?

Have Fun
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
8 mars 2007 à 22:41
Salut,

MadM@tt : Oui, c'est dommage de devoir afficher la fenêtre, mais avec xp, si la fenêtre est iconisée, c'est ça qui se dessine, hélas ! Je vais voir si effectivement il n'y a pas de possibilités autres..

PCPT : Non, tu as raison, la fenêtre ne se met pas à jour, mais j'ai une idée qui me trotte dans la tête. (et avec un de tes snippets..) ;)

Pour la variable oVar c'est (je pense que tu parles du oControl As String) parce que je voulais directement récupérer le nom du controle par .. As Control mais en mettant listbox en paramètre ça ne me récupère que le .Text de sélectionné. J'ai omis de le modifier.

Do loop, car dans une source que j'ai trouvé, il faisait 2 boucles. Si avec une ça suffit, je le modifierai.

Ok pour le hDc en param, je le ferai.

Pour la collection, il faut donc faire une boucle pour faire un Remove sur tous les Items ?

Aie Aie Aie pour le point critique, chez moi, moins de problème (cf. mon screen) seul souci : ton CSMS, il n'est pas trouvé dans la liste :$
Je vais refaire des essais

Merci pour vos comms ;)
@++
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 mars 2007 à 21:42
re,
après lecture du code, c'est commenté, clair et intuitif. très bien.
quelques points tout de même :

*nommer "o"Var pour objet (form ou autre), ok. mais pourquoi faire de même avec une string?
*do loop ok. mais pourquoi for i=2 to 3? (je vois bien le param de GetNextWindow mais pourquoi?)
*résultat sur la form, toujours ok. mais si on veut afficher en picturebox? ta classe doit être réutilisable au mieux, un simple hDC devrait être en argument. au dev la responsabilité d'afficher sa form ou son objet avant
*tu ajoutes en collection, à la destruction un set nothing ne suffit pas. ici des chaînes donc pas trop grave mais il faut virer chaque item.

et le point critique : le listing n'est pas correct chez moi. 2vb (ide), ton projet en cours, 2 explorer, csms, foxmail et cette page, seul FF est listé :$
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
8 mars 2007 à 11:10
Salut mortalino,
l'idée est pas mal, j'avais aussi cherché la dedans mais on est obligé d'afficher la fenetre cible pour pouvoir en faire une capture, ce qui n'est pas pratique... Si quelqu'un a une idée pour contourner ça ?
Sous vista y'a les aperçus des fenetres quand elles sont réduites, mais c'est peut etre pas le meme fonctionnement que XP à ce niveau

Sinon c'est super pratique d'avoir fait ça avec une classe
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 mars 2007 à 07:39
salut mortalino,
pas regardé le code (plus tard ce soir).
la fenêtre listant se remet-elle à jour? de manière à ce que la capture soit capturée (miroir en face du miroir)?
ta source peut être intéressante si ce listing est envoyé sur un PC du LAN, avec une compression jpg lors de la sélection distante...
++ ;)