misterN
Messages postés40Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention14 décembre 2012
-
22 sept. 2006 à 08:30
cs_Fraggy
Messages postés95Date d'inscriptionlundi 9 juin 2003StatutMembreDernière intervention 2 juin 2010
-
13 mai 2011 à 07:09
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Tu voudrais voir une autre image de thumbnail ? calé à un autre moment de la vidéo ?
cela est peut être un réglage dans la registry...
pas dans ma source, en tous cas.
@+ l'ami
cs_Fraggy
Messages postés95Date d'inscriptionlundi 9 juin 2003StatutMembreDernière intervention 2 juin 2010 11 mai 2011 à 22:11
Déterrage forcé mais qui en ravira d'autres ;-)
Salut Rey,
Bien que tout fonctionne nickel il y a une chose que je ne parviens pas à comprendre.
Avec des vidéos :
Je clique un fichier --> Image OK
Je clique un autre --> Image OK
Je reviens sur la première --> Image OK et identique à la première (logique), ce qui me laisse penser que t'as mis une valeur fixe pour aller chercher cette image. La question est ou est cette valeur ? En tout cas moi je ne la trouve pas. Le but choisir une autre si celle-ci ne me convient pas.
J'ai d'abord penser que c'était le "260" de :
oExtract.GetLocation sFile, 260, 0, lpSize, 32, eFlag
Mais visiblement c'est pas ça.
Merci pour les réponses Master ;-)
Dav.
zeunz
Messages postés200Date d'inscriptionjeudi 26 février 2004StatutMembreDernière intervention30 juin 2008 3 janv. 2008 à 18:06
slt renfield,
tres bonne source, je voulais justement comprendre la gestion des miniatures des fichiers videos.
Si je peux me permettre, je mettrai un objet image a la place de la picturebox afin que l'image qu'elle contient soit redimensionnee.
Private Sub CcFile_Click()
With CcFile
If .ListIndex <> -1 Then
Set Image1.Picture = GetThumbNail(.Path & "" & .List(.ListIndex), CcPicPreview.Width, CcPicPreview.Height)
End If
End With
End Sub
Mais le principe reste le même.
salutations, zeunz.
cs_berend
Messages postés2Date d'inscriptionmardi 23 janvier 2007StatutMembreDernière intervention 5 octobre 2007 5 oct. 2007 à 08:17
Dear Renfield,
The other source works fine on the same Windows 2000 test machine. The part that executes similar code is:
If pidl <> 0 Then
'on extrait la miniature de fichier
Set getThumbnail = item.GetUIObjectOf(0&, 1&, pidl, uuidIExtractImage, prgf)
Else
'sinon du dossier parent
Set getThumbnail = item.CreateViewObject(0&, uuidIExtractImage)
End If
In this code, I tested the call to GetUIObjectOf, that works good. In what situation should I reach the call to CreateViewObject? Would it be possible to rewrite the GetThumbNail function in "EXTRACTION DES MINIATURES DES FICHIERS", so that it does GetUIObjectOf instead of the problem call to BindToObject(IExtractImage)? I would prefer to use the GetUIObjectOf method, but it is a problem for me to change the structure of my program so that it matches the other sample that you provide - I would prefer to leave the parameters of GetThumbnail same and only change it internally.
Finally, I found a peculiarity while testing on my Windows 2000 testbed. I happen to click on the shortcut "@Source telecharge depuis ce lien.url" in the test folder and to my surprise the Extract method causes a MessageBox to appear. I can reproduce the same in the second program, see screenshot:
http://www.berend.com/images/screenshot.png
Is this something that you also encountered, could there be a way to surpress it? My program needs to run on a server, so the MessageBox is inconvenient.
Again thanks for providing the very accessible VB6 sample code to a difficult-to-understand Windows interface,
Best regards,
Berend
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 5 oct. 2007 à 06:33
Hi,
Thanks you for having done some searchs and not just say 'it's bas : it doesn't work !!! '
cs_berend
Messages postés2Date d'inscriptionmardi 23 janvier 2007StatutMembreDernière intervention 5 octobre 2007 4 oct. 2007 à 20:53
Hello,
First of all: please excuse that I do not write in French, unfortunately I am not confident in your beautiful language. I do hope that you do understand me anyway.
I had a problem with your -otherwise excellent- code on Windows 2000 SP4. This statement always failed with "Invalid procedure call or argument":
oFolder.BindToObject pIdL, 0, lpIID_IExtractImage, oExtract
It worked fine on all other Windows versions that I tried (XP, 2003, Vista, 2008 server). I found out myself that using BindToStorage rather than BindToObject will work on Windows 2000. To keep as close as possible to your code, I put in this change to fix my problem:
oFolder.BindToObject pIdL, 0, lpIID_IExtractImage, oExtract
If oExtract Is Nothing Then
oFolder.BindToStorage pIdL, 0, lpIID_IExtractImage, oExtract
End If
Perhaps this helps other readers as well.
With kind regards,
Berend Engelbrecht
Pays Bas
cs_ravachol
Messages postés86Date d'inscriptionvendredi 28 décembre 2001StatutMembreDernière intervention10 juillet 2008 1 oct. 2007 à 11:18
merci !
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 1 oct. 2007 à 11:05
a ajouter dans Projet > références (le TLB)
cs_ravachol
Messages postés86Date d'inscriptionvendredi 28 décembre 2001StatutMembreDernière intervention10 juillet 2008 1 oct. 2007 à 10:17
re bonjour,
je pense que le pb vient des deux fichiers ShellExt.odl et ShellExt.tlb
mais je ne sais pas quoi en faire ou ou les mettre !
cs_ravachol
Messages postés86Date d'inscriptionvendredi 28 décembre 2001StatutMembreDernière intervention10 juillet 2008 1 oct. 2007 à 10:13
bonjour,
quand j'excute le prog pas de pb mais quand j'ai importer le modules .bas et le code dans mon prog
j'ai des user defined type not defined dans le modules notamment
avez vous une idée ?
Billybobbonnet
Messages postés148Date d'inscriptionlundi 12 février 2007StatutMembreDernière intervention 9 novembre 2013 3 juil. 2007 à 14:57
Effectivement ça fonctionne sur d'autres pc. Il y a eu des codecs et des filtres directshow d'installés car le pc est dédié au soft de traitement vidéo que j'installe dessus, et donc entre autres à cette appli de miniatures. Il me reste à faire le ménage des codecs et si ça marche pas je reformate. x-( Merci Renfield, autant pour ces réponses que pour ce bout de code très utile.
Et désolé d'avoir pris les commentaires pour un forum :)
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 3 juil. 2007 à 14:42
pour le moins étrange.
concernant tes craintes, le tlb ne fait que déclarer des interfaces... un truc carré qui tourne depuis des lustres.
pas de nouveau codec ou de modif de config/installation sur ton poste ?
testé sur un autre poste ?
Billybobbonnet
Messages postés148Date d'inscriptionlundi 12 février 2007StatutMembreDernière intervention 9 novembre 2013 3 juil. 2007 à 14:35
Je précise que les version intermédiaires qui fonctionnaient bien ont maintenant le même problème.
Billybobbonnet
Messages postés148Date d'inscriptionlundi 12 février 2007StatutMembreDernière intervention 9 novembre 2013 3 juil. 2007 à 14:13
oui, elle est en Scalemode = 3-pixels Je me permets de mettre le bout de code qui coince:
Private Sub Form_Load()
VScroll1.Max = -100
Set grandeimage.Picture = GetThumbNail(Fichierxxx, CcPicPreview.Width, 438)
End Sub
Private Sub VScroll1_Change()
Biz = grandeimage.Height - CcPicPreview.Height < ici
grandeimage.Top = Biz * VScroll1.Value / 100
End Sub
Private Sub VScroll1_Scroll()
'Régalge de l'image verticalement
If VScroll1.Value < VScroll1.Max Then
VScroll1.Value = VScroll1.Value + 10
End If
Biz = grandeimage.Height - CcPicPreview.Height < ici
grandeimage.Top = Biz * VScroll1.Value / 100
End Sub
Le code fonctionnait très bien jusqu'à il y a peu mais plante maintenant. C'est pour ça que je me demande si ce n'est pas la bibliothèque de types ShellExt et si il n'y a pas des antécédents parmi vous de plantages de cette bibli?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 3 juil. 2007 à 12:24
sur que ta Form est bien en Scalemode = 3 - pixels ?
Billybobbonnet
Messages postés148Date d'inscriptionlundi 12 février 2007StatutMembreDernière intervention 9 novembre 2013 3 juil. 2007 à 11:56
Salut Renfield,
Ton code est super, il marche très bien et je l'utilise depuis un moment. En fait, je crée une miniature d'une vidéo que j'affiche dans un cadre plus petit, avec un ascenceur pour la déplacer, et ça me donne des valeurs pour retailler la vidéo en traitement vidéo. Le pépin, c'est que depuis hier, alors que je mettrais ma main au feu que je n'ai rien changé, il me dit, lorsque j'arrive sur la form qui affiche la miniature que "grandeimage", mon conteneur d'image, (=>Set grandeimage.Picture = GetThumbNail(MonFichier, CcPicPreview.Width, 438)) que grandeimage fait un dépassement de capacité (erreur6) et lui donne pour valeur de Grandeimage.height, en débogage, quelque chose comme 698000 pixels.... L'image (ou plutôt la vidéo d'ou vient l'image) en fait 3500.
Je me demande si ce n'et pas la bibliothèque de types Shellext.tlb qui pose pépin. Quelqu'un a eu affaire à ce genre de problème?
grosbidou21
Messages postés74Date d'inscriptionmardi 3 février 2004StatutMembreDernière intervention 5 février 20102 8 févr. 2007 à 15:22
Tant pis merci quand même.
Je regarderai plus précisement la source de ShareVB (que j'avais déjà vu mais pas essayé la traduction en .NET).
Si j'arrive à mettre ça en .NET je vous tiens au courant
@+
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 8 févr. 2007 à 14:41
grosbidou21
Messages postés74Date d'inscriptionmardi 3 février 2004StatutMembreDernière intervention 5 février 20102 8 févr. 2007 à 14:09
Salut Renfield,
J'aurai aimer savoir s'il est possible de passer cela en .NET (2.0)?
J'ai essayé mais de nombreuse erreur apparaissent lors de la traduction. De plus j'ai tenté de recompiler seulement le module de ta source dans un dll et de l'importer dans un projet .NET mais l'appel "GetThumbnail(...) ne renvoi pas un objet "image" mais un "Ipicture" qui ne plait pas au .NET.
J'ai fait pas mal de recherche sur codesources et ta source est vraiment la meilleure puisqu'elle peut générer des images de grande taille et ne s'arrete pas à la définition de nombreux extracteur de miniatures (160x120 je crois)
J'espère que tu auras une réponse à cela.
D'avance merci!
Alain
misterN
Messages postés40Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention14 décembre 2012 6 oct. 2006 à 11:39
Renfield>
Clair net et précis.
Merci.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 6 oct. 2006 à 11:10
le champs d'application n'est simplement pas le même...
LoadPicture fais son job, et sais manipuler les images
la source que je propose ici va faire des recherches en base de registre, va instancier des dll de tiers afin qu'elles puissent extraire des miniatures de films, documents Office, etc...
bref, y'a plus de boulot a effectuer...
ce qui fait que ce que implémente concernant les images est de fait plus rapide ^^
misterN
Messages postés40Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention14 décembre 2012 6 oct. 2006 à 10:54
Renfield>
Tu peux développer ton explication?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 6 oct. 2006 à 10:49
et encore, LoadPicture n'est pas forcément le plus rapide ^^
cependendant, elle ne fonctionne que pour les BMP/JPG/GIF...
misterN
Messages postés40Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention14 décembre 2012 6 oct. 2006 à 10:46
Renfield>
Par contre j'ai fait un comparatif de vitesse d'affichage dans le ListView.
Résultat:
La méthode avec LoadPicture(FileName)dans un PictureBox,
puis SetStretchBltMode(PictureBox.hDC, STRETCHMODE),
puis StretchBlt(PictureBox.hDC,...etc...
est beaucoup plus rapide qu'avec getThumbnail(...).
Y at'il une amélioration à apporter ou est-ce normal pour ce genre d'utilisation ou encore quelque chose m'échappe...peux-tu m'éclairer.
Merci.
misterN
Messages postés40Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention14 décembre 2012 26 sept. 2006 à 07:57
Renfield>
J'ai trouvé :-)
En supprimant la réf. à DAO 3.51 c'est OK.
Pourquoi, ça toi seul peut le trouver, je te fais confiance!
Merci pour ton engagement.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 25 sept. 2006 à 16:09
on dirait qu'il aime pas mon fichier .TLB...
(est-til bien dans les references de ton projet)
misterN
Messages postés40Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention14 décembre 2012 25 sept. 2006 à 15:56
Renfield>
Lorsque je boucle une liste de fichiers voilà ce que ça me donne...
Un message VB
Erreur de compilation:
Type d'argument ByRef incompatible
Concerne lpSize dans la Function getThumbnail
Peux-tu éclairer mes lanternes :-(
Merci d'avance
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 25 sept. 2006 à 01:21
après discussions sur le forum, il s'avère qu'un post similaire de Monsieur ShareVB a été fait très recemment...
je vous transmet donc l'addresse de celui-ci, et m'aprete a effacer le mien.
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 24 sept. 2006 à 11:12
Salut Renfiled,
Ben...comme dab...source impécable dans tout les sens du terme...Présentation simple mais éfficace, voilà une souce qui peut m'être utile , pour afficher des miniatures de pièces mécanique et diverses dans mes sources de bases de données.
10/10.
Grosse poignée de main !!Les bons chiffres 73 / 51
Exploreur
A+
cs_pluplu
Messages postés615Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention 4 juillet 2012 23 sept. 2006 à 15:48
ça n'a pas l'air de fonctionner sous Windows 2000 !?
cs_rodyrody
Messages postés2Date d'inscriptionjeudi 10 février 2005StatutMembreDernière intervention23 septembre 2006 23 sept. 2006 à 08:54
Excellente source!
Merci beaucoup pour ton partage..
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 22 sept. 2006 à 09:38
Moustachu...
euh...
oui, voilà, bien sûr, il s'agit bien évidemment de la bande annonce du film ^^
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 22 sept. 2006 à 09:37
Jamais vu qu'il s'agissait d'une demande si récurrente, Dark Sidious,
c'est toujours ça, au moins, maintenant, y'a un exemple dispo ^^
de là a dire que ca évitera les questions sur le sujet, je l'ignore, des questions dont les réponses sont déjà fournies sur le Forum ou dans des codes, il en arrive tous les jours :p
cs_moustachu
Messages postés1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention 1 janvier 2012 22 sept. 2006 à 09:30
Renfield> Libre a toi d'avoir la bande annonce du film en Xvid :o), il est vrai qu'un écran noir n'aurait pas illustré vraiment ta source ! Je confirme aussi que sous NT, ça ne marche pas. Mais bon, hein, sous NT aussi...
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 22 sept. 2006 à 09:29
Alors là, merci renfield ! Ca va permettre (je l'espère) d'éviter toutes les questions sur le sujet qu'on trouve régulièrement sur le forum à ce sujet.
DarK Sidious
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 22 sept. 2006 à 09:23
Minimum operating systems Windows 2000, Millennium
olixelle
Messages postés506Date d'inscriptionvendredi 30 juillet 2004StatutMembreDernière intervention 3 mars 20082 22 sept. 2006 à 09:15
mais ca change tout alors :)
c tres interressant ton truc
g pas vb6 donc jpeux pas tester.... ca marche aussi sous win2k ?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 22 sept. 2006 à 09:09
Oui, MisterN, libre a toi d'exploiter la chose comme tu le désires...
par exemple, générer une page Web avec des miniatures de vos documents Office, films, etc...
J'ai codé cela suite a une question sur le Forum. Le propriétaire du post nous en dira peut etre plus sur l'utilisation qu'il compte faire de cette fonction^^
Désolé, Moustachu...
tu n'as pas tord dans la fond, mais je trouvais qu'une vidéo présentait pas trop mal...
cependant, la plupart des vidéos commencent par un bel écran tout noir.
la miniature n'aurait pas été très convainquante :p
Olixelle, on ne va pas piocher dans thumbs.db si c'est ce que tu penses. En clair, l'utilisateur n'a pas a avoir visité son repertoire pour qu'une miniature soit trouvée ; elle est regénérée systématiquement (je pourrais peut être, même, la mettre en cache, en modifiant simplement le flag transmis à la méthode GetLocation...)
Maintenant, c'est vrai que tous les fichiers ne génèreront pas de miniature... ca dépend de ce que votre système prend en charge.
a noter que certains éditeurs d'image ajoutent des extensions au Shell qui permettent d'avoir des miniatures pour leurs formats propriétaires.
EBArtSoft a pour l'exemple créé une de ces extensions Shell, qui fournis des miniatures pour les fichiers PCX:
http://www.vbfrance.com/codes/AFFICHER-MINIATURES-PERSO-DANS-EXPLORER_37610.aspx
olixelle
Messages postés506Date d'inscriptionvendredi 30 juillet 2004StatutMembreDernière intervention 3 mars 20082 22 sept. 2006 à 08:50
chuis amoureux aussi :)
par contre j'imagine que par défaut, tous les fichiers n'ont pas de miniatures, il faut que l'user rentre dans le dossier en quesiton pour qu'elle soit créée non ?
Connaissez vous une méthode pour demander à Windows de les générer ?
cs_moustachu
Messages postés1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention 1 janvier 2012 22 sept. 2006 à 08:47
Bonjour,
Merci pour cette source. Toujours sympa de savoir comment tout ça fonctionne.
Mais dis... pirates des caraïbes 2....Xvid... t'aurais pas ou trouver autre chose ;o). En tout cas, tu n'as pas choisi l'atrice plus moche !!
++
Moustachu
misterN
Messages postés40Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention14 décembre 2012 22 sept. 2006 à 08:30
Renfield>
En tout cas bravo pour tes nombreux commentaires et progs constructifs que tu dispenses à tous les Vbistes comme moi admiratifs.
Si j'ai bien compris la portée de ce code,
on peut recadrer l'image dans le PictureBox, la stocker via une boucle dans un ImageList puis charger un ListView...rapidement ou y at'il une autre soluce?
A+
13 mai 2011 à 07:09
Ou alors ajouter une capture d'image depuis un de
mes projets ou je me cale ou je veux sur la vidéo.
Merci pour la réponse Rey ;-)
12 mai 2011 à 09:50
le 260 ?
non, c'est la taille du buffer...
cf:
http://msdn.microsoft.com/en-us/library/bb761846(v=vs.85).aspx
Tu voudrais voir une autre image de thumbnail ? calé à un autre moment de la vidéo ?
cela est peut être un réglage dans la registry...
pas dans ma source, en tous cas.
@+ l'ami
11 mai 2011 à 22:11
Salut Rey,
Bien que tout fonctionne nickel il y a une chose que je ne parviens pas à comprendre.
Avec des vidéos :
Je clique un fichier --> Image OK
Je clique un autre --> Image OK
Je reviens sur la première --> Image OK et identique à la première (logique), ce qui me laisse penser que t'as mis une valeur fixe pour aller chercher cette image. La question est ou est cette valeur ? En tout cas moi je ne la trouve pas. Le but choisir une autre si celle-ci ne me convient pas.
J'ai d'abord penser que c'était le "260" de :
oExtract.GetLocation sFile, 260, 0, lpSize, 32, eFlag
Mais visiblement c'est pas ça.
Merci pour les réponses Master ;-)
Dav.
3 janv. 2008 à 18:06
tres bonne source, je voulais justement comprendre la gestion des miniatures des fichiers videos.
Si je peux me permettre, je mettrai un objet image a la place de la picturebox afin que l'image qu'elle contient soit redimensionnee.
Private Sub CcFile_Click()
With CcFile
If .ListIndex <> -1 Then
Set Image1.Picture = GetThumbNail(.Path & "" & .List(.ListIndex), CcPicPreview.Width, CcPicPreview.Height)
End If
End With
End Sub
Mais le principe reste le même.
salutations, zeunz.
5 oct. 2007 à 08:17
The other source works fine on the same Windows 2000 test machine. The part that executes similar code is:
If pidl <> 0 Then
'on extrait la miniature de fichier
Set getThumbnail = item.GetUIObjectOf(0&, 1&, pidl, uuidIExtractImage, prgf)
Else
'sinon du dossier parent
Set getThumbnail = item.CreateViewObject(0&, uuidIExtractImage)
End If
In this code, I tested the call to GetUIObjectOf, that works good. In what situation should I reach the call to CreateViewObject? Would it be possible to rewrite the GetThumbNail function in "EXTRACTION DES MINIATURES DES FICHIERS", so that it does GetUIObjectOf instead of the problem call to BindToObject(IExtractImage)? I would prefer to use the GetUIObjectOf method, but it is a problem for me to change the structure of my program so that it matches the other sample that you provide - I would prefer to leave the parameters of GetThumbnail same and only change it internally.
Finally, I found a peculiarity while testing on my Windows 2000 testbed. I happen to click on the shortcut "@Source telecharge depuis ce lien.url" in the test folder and to my surprise the Extract method causes a MessageBox to appear. I can reproduce the same in the second program, see screenshot:
http://www.berend.com/images/screenshot.png
Is this something that you also encountered, could there be a way to surpress it? My program needs to run on a server, so the MessageBox is inconvenient.
Again thanks for providing the very accessible VB6 sample code to a difficult-to-understand Windows interface,
Best regards,
Berend
5 oct. 2007 à 06:33
Thanks you for having done some searchs and not just say 'it's bas : it doesn't work !!! '
does this similar source:
http://www.vbfrance.com/codes/EXTRACTION-MINIATURES-FICHIERS-COMME-DANS-EXPLORATEUR-MODE-DETAILS_39524.aspx
suffer of the same drawback ?
4 oct. 2007 à 20:53
First of all: please excuse that I do not write in French, unfortunately I am not confident in your beautiful language. I do hope that you do understand me anyway.
I had a problem with your -otherwise excellent- code on Windows 2000 SP4. This statement always failed with "Invalid procedure call or argument":
oFolder.BindToObject pIdL, 0, lpIID_IExtractImage, oExtract
It worked fine on all other Windows versions that I tried (XP, 2003, Vista, 2008 server). I found out myself that using BindToStorage rather than BindToObject will work on Windows 2000. To keep as close as possible to your code, I put in this change to fix my problem:
oFolder.BindToObject pIdL, 0, lpIID_IExtractImage, oExtract
If oExtract Is Nothing Then
oFolder.BindToStorage pIdL, 0, lpIID_IExtractImage, oExtract
End If
Perhaps this helps other readers as well.
With kind regards,
Berend Engelbrecht
Pays Bas
1 oct. 2007 à 11:18
1 oct. 2007 à 11:05
1 oct. 2007 à 10:17
je pense que le pb vient des deux fichiers ShellExt.odl et ShellExt.tlb
mais je ne sais pas quoi en faire ou ou les mettre !
1 oct. 2007 à 10:13
quand j'excute le prog pas de pb mais quand j'ai importer le modules .bas et le code dans mon prog
j'ai des user defined type not defined dans le modules notamment
avez vous une idée ?
3 juil. 2007 à 14:57
Et désolé d'avoir pris les commentaires pour un forum :)
3 juil. 2007 à 14:42
concernant tes craintes, le tlb ne fait que déclarer des interfaces... un truc carré qui tourne depuis des lustres.
pas de nouveau codec ou de modif de config/installation sur ton poste ?
testé sur un autre poste ?
3 juil. 2007 à 14:35
3 juil. 2007 à 14:13
Private Sub Form_Load()
VScroll1.Max = -100
Set grandeimage.Picture = GetThumbNail(Fichierxxx, CcPicPreview.Width, 438)
End Sub
Private Sub VScroll1_Change()
Biz = grandeimage.Height - CcPicPreview.Height < ici
grandeimage.Top = Biz * VScroll1.Value / 100
End Sub
Private Sub VScroll1_Scroll()
'Régalge de l'image verticalement
If VScroll1.Value < VScroll1.Max Then
VScroll1.Value = VScroll1.Value + 10
End If
Biz = grandeimage.Height - CcPicPreview.Height < ici
grandeimage.Top = Biz * VScroll1.Value / 100
End Sub
Le code fonctionnait très bien jusqu'à il y a peu mais plante maintenant. C'est pour ça que je me demande si ce n'est pas la bibliothèque de types ShellExt et si il n'y a pas des antécédents parmi vous de plantages de cette bibli?
3 juil. 2007 à 12:24
3 juil. 2007 à 11:56
Ton code est super, il marche très bien et je l'utilise depuis un moment. En fait, je crée une miniature d'une vidéo que j'affiche dans un cadre plus petit, avec un ascenceur pour la déplacer, et ça me donne des valeurs pour retailler la vidéo en traitement vidéo. Le pépin, c'est que depuis hier, alors que je mettrais ma main au feu que je n'ai rien changé, il me dit, lorsque j'arrive sur la form qui affiche la miniature que "grandeimage", mon conteneur d'image, (=>Set grandeimage.Picture = GetThumbNail(MonFichier, CcPicPreview.Width, 438)) que grandeimage fait un dépassement de capacité (erreur6) et lui donne pour valeur de Grandeimage.height, en débogage, quelque chose comme 698000 pixels.... L'image (ou plutôt la vidéo d'ou vient l'image) en fait 3500.
Je me demande si ce n'et pas la bibliothèque de types Shellext.tlb qui pose pépin. Quelqu'un a eu affaire à ce genre de problème?
8 févr. 2007 à 15:22
Je regarderai plus précisement la source de ShareVB (que j'avais déjà vu mais pas essayé la traduction en .NET).
Si j'arrive à mettre ça en .NET je vous tiens au courant
@+
8 févr. 2007 à 14:41
http://www.vbfrance.com/codes/EXTRACTION-MINIATURES-FICHIERS-COMME-DANS-EXPLORATEUR-MODE-DETAILS_39524.aspx
concernant .Net, je suis incapable de t'aider.
8 févr. 2007 à 14:09
J'aurai aimer savoir s'il est possible de passer cela en .NET (2.0)?
J'ai essayé mais de nombreuse erreur apparaissent lors de la traduction. De plus j'ai tenté de recompiler seulement le module de ta source dans un dll et de l'importer dans un projet .NET mais l'appel "GetThumbnail(...) ne renvoi pas un objet "image" mais un "Ipicture" qui ne plait pas au .NET.
J'ai fait pas mal de recherche sur codesources et ta source est vraiment la meilleure puisqu'elle peut générer des images de grande taille et ne s'arrete pas à la définition de nombreux extracteur de miniatures (160x120 je crois)
J'espère que tu auras une réponse à cela.
D'avance merci!
Alain
6 oct. 2006 à 11:39
Clair net et précis.
Merci.
6 oct. 2006 à 11:10
LoadPicture fais son job, et sais manipuler les images
la source que je propose ici va faire des recherches en base de registre, va instancier des dll de tiers afin qu'elles puissent extraire des miniatures de films, documents Office, etc...
bref, y'a plus de boulot a effectuer...
ce qui fait que ce que implémente concernant les images est de fait plus rapide ^^
6 oct. 2006 à 10:54
Tu peux développer ton explication?
6 oct. 2006 à 10:49
cependendant, elle ne fonctionne que pour les BMP/JPG/GIF...
6 oct. 2006 à 10:46
Par contre j'ai fait un comparatif de vitesse d'affichage dans le ListView.
Résultat:
La méthode avec LoadPicture(FileName)dans un PictureBox,
puis SetStretchBltMode(PictureBox.hDC, STRETCHMODE),
puis StretchBlt(PictureBox.hDC,...etc...
est beaucoup plus rapide qu'avec getThumbnail(...).
Y at'il une amélioration à apporter ou est-ce normal pour ce genre d'utilisation ou encore quelque chose m'échappe...peux-tu m'éclairer.
Merci.
26 sept. 2006 à 07:57
J'ai trouvé :-)
En supprimant la réf. à DAO 3.51 c'est OK.
Pourquoi, ça toi seul peut le trouver, je te fais confiance!
Merci pour ton engagement.
25 sept. 2006 à 16:09
(est-til bien dans les references de ton projet)
25 sept. 2006 à 15:56
Lorsque je boucle une liste de fichiers voilà ce que ça me donne...
Un message VB
Erreur de compilation:
Type d'argument ByRef incompatible
Concerne lpSize dans la Function getThumbnail
Peux-tu éclairer mes lanternes :-(
Merci d'avance
25 sept. 2006 à 01:21
je vous transmet donc l'addresse de celui-ci, et m'aprete a effacer le mien.
http://www.vbfrance.com/codes/EXTRACTION-MINIATURES-FICHIERS-COMME-DANS-EXPLORATEUR-MODE-DETAILS_39524.aspx
24 sept. 2006 à 11:12
Ben...comme dab...source impécable dans tout les sens du terme...Présentation simple mais éfficace, voilà une souce qui peut m'être utile , pour afficher des miniatures de pièces mécanique et diverses dans mes sources de bases de données.
10/10.
Grosse poignée de main !!Les bons chiffres 73 / 51
Exploreur
A+
23 sept. 2006 à 15:48
23 sept. 2006 à 08:54
Merci beaucoup pour ton partage..
22 sept. 2006 à 09:38
euh...
oui, voilà, bien sûr, il s'agit bien évidemment de la bande annonce du film ^^
22 sept. 2006 à 09:37
c'est toujours ça, au moins, maintenant, y'a un exemple dispo ^^
de là a dire que ca évitera les questions sur le sujet, je l'ignore, des questions dont les réponses sont déjà fournies sur le Forum ou dans des codes, il en arrive tous les jours :p
22 sept. 2006 à 09:30
22 sept. 2006 à 09:29
DarK Sidious
22 sept. 2006 à 09:23
dixit MSDN
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/ifaces/iextractimage/iextractimage.asp
22 sept. 2006 à 09:15
c tres interressant ton truc
g pas vb6 donc jpeux pas tester.... ca marche aussi sous win2k ?
22 sept. 2006 à 09:09
par exemple, générer une page Web avec des miniatures de vos documents Office, films, etc...
J'ai codé cela suite a une question sur le Forum. Le propriétaire du post nous en dira peut etre plus sur l'utilisation qu'il compte faire de cette fonction^^
Désolé, Moustachu...
tu n'as pas tord dans la fond, mais je trouvais qu'une vidéo présentait pas trop mal...
cependant, la plupart des vidéos commencent par un bel écran tout noir.
la miniature n'aurait pas été très convainquante :p
Olixelle, on ne va pas piocher dans thumbs.db si c'est ce que tu penses. En clair, l'utilisateur n'a pas a avoir visité son repertoire pour qu'une miniature soit trouvée ; elle est regénérée systématiquement (je pourrais peut être, même, la mettre en cache, en modifiant simplement le flag transmis à la méthode GetLocation...)
Maintenant, c'est vrai que tous les fichiers ne génèreront pas de miniature... ca dépend de ce que votre système prend en charge.
a noter que certains éditeurs d'image ajoutent des extensions au Shell qui permettent d'avoir des miniatures pour leurs formats propriétaires.
EBArtSoft a pour l'exemple créé une de ces extensions Shell, qui fournis des miniatures pour les fichiers PCX:
http://www.vbfrance.com/codes/AFFICHER-MINIATURES-PERSO-DANS-EXPLORER_37610.aspx
22 sept. 2006 à 08:50
par contre j'imagine que par défaut, tous les fichiers n'ont pas de miniatures, il faut que l'user rentre dans le dossier en quesiton pour qu'elle soit créée non ?
Connaissez vous une méthode pour demander à Windows de les générer ?
22 sept. 2006 à 08:47
Merci pour cette source. Toujours sympa de savoir comment tout ça fonctionne.
Mais dis... pirates des caraïbes 2....Xvid... t'aurais pas ou trouver autre chose ;o). En tout cas, tu n'as pas choisi l'atrice plus moche !!
++
Moustachu
22 sept. 2006 à 08:30
En tout cas bravo pour tes nombreux commentaires et progs constructifs que tu dispenses à tous les Vbistes comme moi admiratifs.
Si j'ai bien compris la portée de ce code,
on peut recadrer l'image dans le PictureBox, la stocker via une boucle dans un ImageList puis charger un ListView...rapidement ou y at'il une autre soluce?
A+