VB6 problème avec Inet... dépendamments de l'ordinateur...

Messages postés
14
Date d'inscription
mercredi 7 juin 2006
Statut
Membre
Dernière intervention
6 février 2008
-
Messages postés
14
Date d'inscription
mercredi 7 juin 2006
Statut
Membre
Dernière intervention
6 février 2008
-
Bonjour,

J'ai relancé un patcher qu'on ami avais fait pour mon serveur et la... parfois sur des ordinateurs il fonctionne, d'autre fois non... J'ai tout de suite pensée au DLL (J'ai essayer tout ce que j'avais en mon pouvoir, et ca na pas marcher...)

J'ai fait un scan avec Process Monitor... il manque pas de DLL...

J'ai installer VB6 sur la machine en question qui marchais pas (et c'est environ 1 machine sur 2...) et en regardans ou il plante c'est ici :
Private Function Getfile(site, file As String)
    'Name of the updated exe
    'RemoteFileToGet = site & updatelist


    FirstResponse = False
    m_FileSize = GetHTTPFileSize(site & file)
    While Inet1.StillExecuting = True
        DoEvents  <<<<<<<=============================
    Wend
    lblStatus.Caption = "Détermination de la taille du fichier..."
    'lblInfo.Caption = "0/" &amp; (m_FileSize)
    lblInfo.Caption = (m_FileSize) &amp; " octets"
    pbfile.Value = 0
    m_LocalSaveFile = Path &amp; file
    'Inet1.Execute RemoteFileToGet, "GET " &amp; Chr(34) &amp; m_LocalSaveFile &amp; Chr(34)
    Inet1.Execute site &amp; file, "GET " &amp; Chr(34) &amp; m_LocalSaveFile &amp; Chr(34)
End Function


Il plante au DoEvents, et rien a faire... il n'arrive même pas a download un tout petit peu avec Inet... On dirais que c'est Inet qui plante...

Sur mon ordi à moi, tout fonctionne impec... (jai meme pris toute mes dll et les ai remis sur ma deuxieme machine...)

Si quelqu'un peux m'aider.. merci ^^

16 réponses

Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
extrait de la doc VB6 ...regarde les deux lignes que j'ai mis en rouge  c'est peut être la solution
[javascript:alink_4.Click() instructions] dans une boucle aussi
longtemps que la valeur d'une condition est True.

Syntaxe

Whilecondition
[statements]

Wend

La syntaxe de l'instruction While...Wend comprend les éléments
suivants :

Élément, Description, ----
condition, <object id="alink_5" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>Expression numérique ou
<object id="alink_6" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>expression de chaîne vraie (True)
ou fausse (False). Si l'argument condition est de type
<object id="alink_7" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>Null, il est considéré comme
False., ----
statements, Facultatif. Une ou plusieurs instructions exécutées tant que la
valeur de la condition est True.

Remarques

Si la valeur de l'argument condition est True, toutes les
instructions (statements) sont exécutées jusqu'à ce que l'instruction
Wend soit rencontrée. Le contrôle retourne ensuite à l'instruction
While et condition est de nouveau vérifié. Si condition est
toujours vrai (True), le processus est répété. Si la valeur de
condition n'est pas True, l'exécution reprend à partir de
l'instruction qui suit l'instruction Wend.

Les boucles While...Wend peuvent être imbriquées à n'importe quel
niveau. Chaque Wend correspond à l'instruction While la plus
récente.

Conseil   L'instruction Do...Loop permet
d'exécuter une itération de manière plus structurée et plus souple.
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
mais va surtout faire une recherche sur FTP et HTTP dans VB France il y a des tas de choses au sujet d'INET et pas toutes élogieuses !
Messages postés
14
Date d'inscription
mercredi 7 juin 2006
Statut
Membre
Dernière intervention
6 février 2008

Bah en faite... je ne suis pas vraiment codeur VB... je déteste le VB, (a cause des problème comme ici...)...

Sinon, si je met :

Do While Inet1.StillExecuting = True
        DoEvents
    Loop

Fonctionne pas plus... plante encore au DoEvents... (il reste la...)

On dirais qu'il ne peux pas acceder au net via Inet... i veux juste pas... enfin, c'est ce que je pense... mais quel est le problème ?

Merci beaucoup!
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
lol si il reste là ce n'est pas un plantage du doevent
c'est plutot qu'il ne reçoit jamais l'info qui lui permet de repartir !
regardes alors du coté de ton  Inet1.StillExecuting = True en mettant un espion dessus
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
louche....

quel lien direct entre 

   m_FileSize = GetHTTPFileSize(site & file)

et 

    While Inet1.StillExecuting = True
        DoEvents  <<<<<<<=============================
    Wend

on a le code de GetHTTPFileSize ?
parce que s'il rend la main sans que Inet n'ai au final finit son job, m_File_Size ne risque pas d'avoir souvent une valeur cohérente...

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
14
Date d'inscription
mercredi 7 juin 2006
Statut
Membre
Dernière intervention
6 février 2008

HttpGetFileSize :

Private Function GetHTTPFileSize(strHTTPFile As String) As Long
On Error GoTo ErrorHandler
    Dim GetValue As String
    Dim GetSize  As Long
   
    m_GettingFileSize = True
   
    Inet1.Execute strHTTPFile, "HEAD " & Chr(34) & strHTTPFile & Chr(34)


    Do Until Inet1.StillExecuting = False
        DoEvents
    Loop


    GetValue = Inet1.GetHeader("Content-length")
   
    Do Until Inet1.StillExecuting = False
        DoEvents
    Loop
   
    If IsNumeric(GetValue) = True Then
        GetSize = CLng(GetValue)
    Else
        GetSize = -1
    End If


    If GetSize <0 Then GetSize -1


    m_GettingFileSize = False
    GetHTTPFileSize = GetSize
Exit Function


ErrorHandler:
    m_GettingFileSize = False
    GetHTTPFileSize = -1
End Function

Je n'ai toujours pas trouvé...

Le plus louche c'est qu'il marche sur certains ordis ... (avec ou sans vb6...)
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
pas besoin de coller des

Do Until Inet1.StillExecuting = False
DoEvents
Loop

partout...

tu es de toutes facon récuperer ce qui manque via la méthode GetChunk
Messages postés
14
Date d'inscription
mercredi 7 juin 2006
Statut
Membre
Dernière intervention
6 février 2008

Je ne suis pas codeur VB... c'est pas moi qui a fait le code... (mais je code du C ou Cpp, donc jpeux me débrouiller pour le VB ^^)

Sinon, il faudrais que jenleve completement mes DoEvent ?

J'essaie ca dès que je rentre chez moi

Merci!
Messages postés
14
Date d'inscription
mercredi 7 juin 2006
Statut
Membre
Dernière intervention
6 février 2008

Bon, si j'enleves mes DoEvents... sa plante pas, mais ca download pas non plus... donc ca plante plus loin dans le code car il n'a pas téléchargé les fichiers...

Donc, le problème viendrais vraiment de Inet ?

Merci
Messages postés
14
Date d'inscription
mercredi 7 juin 2006
Statut
Membre
Dernière intervention
6 février 2008

J'ai enfin trouvé que c'étais a cause de IE7...

Les ordinateurs avec IE7 ne fonctionne pas ... Inet ne veut pas télécharger les fichiers... pourquoi ?
Messages postés
14
Date d'inscription
mercredi 7 juin 2006
Statut
Membre
Dernière intervention
6 février 2008

Bon j'ai enfin trouvé le reel problème...

Internet Explorer 7... le problème à été traité ici :

http://www.vbfrance.com/infomsg_ERREUR-EXECUTION-FFFFFFFE_863414.aspx

et ici originalement :

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=843101&SiteID=1

Le gros problème, c'est qu'une fois les étapes fait... cela marche... sur l'ordinateur en question, mais pas sur les autres... et je ne peux pas demander a 500 personnes de faire ça...

Dans le code, peux-t-on lui dire d'utiliser la dll qui a dans le root directory du programme (shdocvw.dll) ? Ca reglerais bien des problèmes !

Merci!!!
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
via un fichier .manifest, normallement, oui...
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
si c'est juste une question de dll à remplacer cela peut se faire tres simplement en faisant un setup de ton programme en lui mettant la bonne dll
a l'installation du program elle sera mise en place automatiquement et plus de soucis !
Messages postés
14
Date d'inscription
mercredi 7 juin 2006
Statut
Membre
Dernière intervention
6 février 2008

Non, car cette dll ne peux qu'etre remplacer par le setup de IE7 ou IE6... tinquîète pas j'ai essayé... et si on remplace la dll, ie7 cesse de fonctionner... =/

.manifest ? Merci... je vais rechercher ca, mais aurais tu quelques informations pour moi ?
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
toute la doc sur MSDN.

permet de forcer l'utilisation d'une dll plutot qu'une autre.
c'est utilisé générallement pour appliquer le style Xp aux applis.
Messages postés
14
Date d'inscription
mercredi 7 juin 2006
Statut
Membre
Dernière intervention
6 février 2008

Merci!

Mais ca fais 2 jours que j'essaie et rien ne fonctionne...

Pourrais tu me donner un exemple pour une DLL ? Car ca parle pas mal juste du thème XP... De plus, je comprends pas trop comment faire oO

Merci beaucoup