Utilisation de URLDownloadToFile

Résolu
Menerlach Messages postés 57 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 1 juin 2015 - 27 nov. 2014 à 23:23
Menerlach Messages postés 57 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 1 juin 2015 - 1 déc. 2014 à 11:02
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

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
28 nov. 2014 à 23:10
As-tu essayé d'utiliser le controle inet à la place, je crois qu'il fait un download non bloquant.
0
Menerlach Messages postés 57 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 1 juin 2015
29 nov. 2014 à 11:04
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...
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
29 nov. 2014 à 20:31
Une recherche rapide sur le site te donnera quelques réponses.
0
Menerlach Messages postés 57 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 1 juin 2015
30 nov. 2014 à 12:56
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 !
0
Menerlach Messages postés 57 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 1 juin 2015
30 nov. 2014 à 16:12
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
30 nov. 2014 à 19:30
0
Menerlach Messages postés 57 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 1 juin 2015
30 nov. 2014 à 23:53
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.
0
Menerlach Messages postés 57 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 1 juin 2015
1 déc. 2014 à 11:02
ç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...
0
Rejoignez-nous