Impossible d'utiliser winsock chez un client

Résolu
cs_trotter Messages postés 16 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 24 mars 2009 - 30 mars 2008 à 16:15
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 - 30 mars 2008 à 17:49
Bonjour,

J'utilise winsock.ocx dan un de mes programmes. D'habitude, je le fournis dans le dossier avec mon .exe, mais cette fois ci, ça ne fonctionne pas.

Le client recoit le message "System error &H8007007E (-2147024770). le module spécifié est introuvable". J'ai essayé de lui envoyer un faux, programme sans référence a winsock.ocx..Ca marche.

Je lui ai demandé de copier winsock.ocx dans system 32, même erreur.

J'ai l'impression que le programme ne sait pas où trouver winsock.ocx. Comment faire pour le detecter, et que ce soit transparent pour l'utilisateur (cad automatiquement) ?

Merci bien.

5 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 mars 2008 à 16:32
Combien de fois faudra-til le dire ?

Avec VB6, fournir un executable, fournir les dll et les ocx utilisés par cet executable ne suffit pas pour que le tout soit fonctionnel.

En effet, tout ce qui est objets COM, dll ActiveX, ocx ainsi que toutes leurs dépendances doivent non seulement etre présentent sur la machine, mais aussi etre dûment enregistrer dans le système via la base de registre.

D'ou la necessité de faire des packs d'installation et de faire une installation digne de ce nom sur la machine.

Pour résoudre ponctuellement ton problème, copie l'ocx dans c:\windows\system32, ouvre le menu démarrer, choisit Executer, tappe regsvr32 winsock.ocx et valide. Une boite de dialogue doit te dire que l'enregistrement est correct.

Pour ne plus avoir ce problème pense à faire un pack d'installation de ton application, et fait-là installer par tes clients comme n'importe quel logiciel du commerce.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
30 mars 2008 à 17:08
Salut
Le pack d'installation EST la solution.
Ca a fonctionné sur d'autres machines non parce que tu as mis le fichier à côté de l'EXE, mais parce que l'OCX existait déjà sur la machine ET qu'il avait été régulièrement enregistré dans la base de registres.
En effet, cet OCX est fréquemment utilisée par tout type d'autres programmes et, il me semble, installé par défaut avec les versions Pro de Windows XP.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 mars 2008 à 17:49
ce pack execute tout simplement la commande que je t'ai indiqué mais sur chacun des composants le necessitant, et ils peuvent etre très nombreux.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
cs_trotter Messages postés 16 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 24 mars 2009
30 mars 2008 à 16:35
Merci pour ta réponse.

Si quelqu'un a une autre solution transparente pour l'utilisateur (une ligne de code ?), je suis tout ouïe.

Ce que je ne pige pas, c'est que j'ai déjà eu ce problème, mais mettre winsock.ocx à coté de l'exe l'a résolu. Une idée du comment du pourquoi ?
0

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

Posez votre question
cs_trotter Messages postés 16 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 24 mars 2009
30 mars 2008 à 17:43
Hmm, à la limite, faudrait trouver ce que ce pack change dans la base de registre pour enregistrer le composant.

Merci de votre aide à tous les deux.
0