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

programmerPhil00 Messages postés 14 Date d'inscription mercredi 7 juin 2006 Statut Membre Dernière intervention 6 février 2008 - 31 janv. 2008 à 08:24
programmerPhil00 Messages postés 14 Date d'inscription mercredi 7 juin 2006 Statut Membre Dernière intervention 6 février 2008 - 6 févr. 2008 à 05:39
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

pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
31 janv. 2008 à 09:08
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.
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
31 janv. 2008 à 09:11
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 !
0
programmerPhil00 Messages postés 14 Date d'inscription mercredi 7 juin 2006 Statut Membre Dernière intervention 6 février 2008
31 janv. 2008 à 09:19
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!
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
31 janv. 2008 à 09:31
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
0

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
31 janv. 2008 à 09:52
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
0
programmerPhil00 Messages postés 14 Date d'inscription mercredi 7 juin 2006 Statut Membre Dernière intervention 6 février 2008
31 janv. 2008 à 19:03
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...)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
31 janv. 2008 à 20:30
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
0
programmerPhil00 Messages postés 14 Date d'inscription mercredi 7 juin 2006 Statut Membre Dernière intervention 6 février 2008
1 févr. 2008 à 02:53
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!
0
programmerPhil00 Messages postés 14 Date d'inscription mercredi 7 juin 2006 Statut Membre Dernière intervention 6 février 2008
1 févr. 2008 à 23:17
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
0
programmerPhil00 Messages postés 14 Date d'inscription mercredi 7 juin 2006 Statut Membre Dernière intervention 6 février 2008
2 févr. 2008 à 00:35
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 ?
0
programmerPhil00 Messages postés 14 Date d'inscription mercredi 7 juin 2006 Statut Membre Dernière intervention 6 février 2008
2 févr. 2008 à 01:09
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!!!
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
2 févr. 2008 à 05:22
via un fichier .manifest, normallement, oui...
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
2 févr. 2008 à 14:40
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 !
0
programmerPhil00 Messages postés 14 Date d'inscription mercredi 7 juin 2006 Statut Membre Dernière intervention 6 février 2008
2 févr. 2008 à 19:16
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 ?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 févr. 2008 à 08:48
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.
0
programmerPhil00 Messages postés 14 Date d'inscription mercredi 7 juin 2006 Statut Membre Dernière intervention 6 février 2008
6 févr. 2008 à 05:39
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
0
Rejoignez-nous