FAIRE UN APERÇU DES APPLIS / FICHIERS OUVERTS DANS UNE FORM AVEC L'API PRINTWIND
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
8 mars 2007 à 07:39
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 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.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 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és1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDerniè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és188Date d'inscriptionmercredi 15 mai 2002StatutMembreDernière intervention25 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és2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 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és1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDerniè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és188Date d'inscriptionmercredi 15 mai 2002StatutMembreDernière intervention25 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és6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 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és188Date d'inscriptionmercredi 15 mai 2002StatutMembreDernière intervention25 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és6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 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és13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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és2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 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és13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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...
++ ;)
2 juil. 2008 à 23:38
comment est-il possible que mon code soit + téléchargé que vu ???
Vu / téléchargé: 3 705 / 5 497
(suis curieux) :)
++
13 mars 2007 à 00:43
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
12 mars 2007 à 21:39
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
12 mars 2007 à 20:48
12 mars 2007 à 08:40
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
10 mars 2007 à 13:23
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.
10 mars 2007 à 12:22
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
9 mars 2007 à 20:36
Est ce que ton code pourrais géré des applis qui seraient non visible à l'ecran (en mémoire) ?
Have Fun
8 mars 2007 à 22:41
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 ;)
@++
8 mars 2007 à 21:42
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é :$
8 mars 2007 à 11:10
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
8 mars 2007 à 07:39
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...
++ ;)