Utilisation de URLDownloadToFile [Résolu]

Signaler
Messages postés
57
Date d'inscription
dimanche 2 décembre 2012
Statut
Membre
Dernière intervention
1 juin 2015
-
Messages postés
57
Date d'inscription
dimanche 2 décembre 2012
Statut
Membre
Dernière intervention
1 juin 2015
-
Bonjour, encore moi.

Mon programme fonctionne de façon satisfaisante mais j'ai cru qu'il était planté, plus de réaction, plus de redraw, bien que la feuille soit en autoredraw, et windows qui déclare que le programme ne répond plus...
J'ai eu du mal à trouver le problème: j'utilise URLDownloadToFile pour charger des images jpg et j'étais simplement tombé sur une image qui met un bon quart d'heure à se charger (http://fr.web.img5.acsta.net/pictures/14/09/09/16/31/419889.jpg) et quand c'est comme ça même les timer ne fonctionnent plus.
Pour éviter ce genre de problème je cherche un moyen soit d'évaluer la taille de l'image avant de la charger, pour renoncer si elle est trop grande, soit de rendre la main de temps en temps par doevents pour l'autoredraw et peut être pour une barre de progression. Il me semble avoir vu que c'est possible mais je n'ai trouvé que des exemples en C et je ne suis pas très fort pour traduire ça en VB...
Si vous savez résoudre ce problème ça m'arrangerais bien !
Merci de m'avoir lu.

6 réponses

Messages postés
14675
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2020
143
As-tu essayé d'utiliser le controle inet à la place, je crois qu'il fait un download non bloquant.
Messages postés
57
Date d'inscription
dimanche 2 décembre 2012
Statut
Membre
Dernière intervention
1 juin 2015

Merci de ta réponse,

inet, je ne connais pas, tu connait un site avec de la doc dessus ? Pas pour le C bien sûr...
Messages postés
14675
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2020
143
Une recherche rapide sur le site te donnera quelques réponses.
Messages postés
57
Date d'inscription
dimanche 2 décembre 2012
Statut
Membre
Dernière intervention
1 juin 2015

Merci de m'avoir aiguillé sur inet dont j'ignorais l'existence...

Inet1.OpenURL remplace très bien URLDownloadToFile mais je n'ai pas encore pu testé si le problème est résolu ou non dans la mesure où l'image qui se chargeait en 1/4 d'heure ne met aujourd'hui que quelques secondes, on verra à l'avenir le comportement d'inet si je retombe sur un fichier difficile à charger...

Encore merci et désolé d'avoir demandé un site d'info alors que c'était si facile à trouver !
Messages postés
57
Date d'inscription
dimanche 2 décembre 2012
Statut
Membre
Dernière intervention
1 juin 2015

Bonjour,

Je pensais le problème résolu mais non, Inet1.OpenURL a le même problème que URLDownloadToFile: il ne rend pas la main tant qu'il na pas terminé et un fichier très long à charger donne l'impression que le programme est planté.
J'ai essayé avec Inet1.Execute , "get " qui est asynchrone comme dit microsoft mais je ne m'en sors pas:

avec l'adresse d'un fichier sur internet dans source$ et l'adresse d'un fichier sur mon disque dur dans destination$ j'ai essayé 3 possibilités:

Inet1.Execute , "get " & source$ & " " & destination$

Ce qui est l'exemple le plus donné sur internet me donne le message d'erreur "aucun ordinateur distant n'est spécifié"

n% = InStr(8, source$, "/")
Internet.Inet1.Execute Left$(source$, n%), "get " & Mid$(source$, n% + 1) & " " & destination$

Là pas de message d'erreur mais pas non plus de fichier destination$, il ne se passe rien.

et

n% = InStrRev( source$, "/")
Internet.Inet1.Execute Left$(source$, n%), "get " & Mid$(source$, n% + 1) & " " & destination$

me renvoie le message "Impossible d'exécuter la demande"...

Des suggestions ?
Messages postés
14675
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2020
143
Messages postés
57
Date d'inscription
dimanche 2 décembre 2012
Statut
Membre
Dernière intervention
1 juin 2015

La méthode AsyncRead, mon basic connait pas, il faut peut être installer un composant spécifique, en tout cas je n'ai pas vu le rapport avec inet.

Le dernier exemple fonctionne, c'est celui que j'ai déjà utilisé avec succès (Inet.OpenURL), Par contre je n'arrive pas à mettre en oeuvre les premiers exemples, ça ne m'a pas l'air d'être du vb6...

En tout cas merci de t'intéresser à mon cas.
Messages postés
57
Date d'inscription
dimanche 2 décembre 2012
Statut
Membre
Dernière intervention
1 juin 2015

ça y est, j'ai trouvé un exemple qui marche en

http://codes-sources.commentcamarche.net/source/8497-enrgistrer-des-images-du-web-avec-le-composant-inet

Merci de m'avoir lu, j'espère que cet échange sera utile à d'autres...