COMMENT SE DÉBARRASSER DE VB6FR.DLL LIMITANT LA COMPATIBILITÉ DES APPLICATIONS V
cs_legion91
Messages postés216Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention15 décembre 2010
-
5 févr. 2004 à 14:19
driscoll
Messages postés1Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 4 avril 2013
-
4 avril 2013 à 18:57
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
driscoll
Messages postés1Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 4 avril 2013 4 avril 2013 à 18:57
Amusant !
Pourquoi faire compliqué alors que c'est très simple !
Il suffit de RE-Compiler avec VB6 English... c'est tout, mais
CA NE POSE PLUS AUCUN PROBLEME DE DEPENDANCE A vb6FR.dll
Best regards
tuyo2poil
Messages postés6Date d'inscriptiondimanche 16 novembre 2003StatutMembreDernière intervention29 septembre 2006 26 nov. 2007 à 19:57
et bin, quand je lis toute cette tartine de commentaires, je trouve que vous êtes bien difficiles !
ce prog marche impec ! le reste on s'en fout !
bravo Ashtheone, et allez donc au champignons, ça vous changera les idées !
2parmelin
Messages postés11Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention22 août 2007 19 juil. 2007 à 09:32
En fait le programme présenté ici n'est pas à intégrer a un autre projet mais agit directement sur le fichier EXE de votre propre projet.
A noter une autre utilisation amusante, remplacer les appels a la MsVbVm60.dll pour une autre dll. Quel intérêt ? Simplement le fait de pouvoir copier la MsVbVm60.dll en incognito.dll, par exemple, et ainsi isoler votre programme de tout problème lié a la dll du VB6.
J'ai utilisé cette technique pour éviter qu'un de mes programmes soit bloqué par quelqu'un qui virait la DLL pour éliminer le démarrage de tous programmes VB de sa machine.
flamcy
Messages postés58Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention14 avril 2009 20 juin 2007 à 23:09
re,
en + je ne sais plus quel code faut mettre ni où le mettre.
il y en a de trop dans tous les coins avec des modif...
Puis faut aussi prendre en compte que je suis loin d'etre expert en vb. Je fais des tit programmes tout doucement et j'essaie de progresser mais ce pb, m'ennui vraiment et je ne suis pas le seul apparement.
rien de tel que quelqu'un qui apprecie votre travail, non?
c'est pourquoi il serait bien d'avoir une solution qui serve de référence.
cs_kazimir
Messages postés26Date d'inscriptionmercredi 23 octobre 2002StatutMembreDernière intervention 4 novembre 2008 20 juin 2007 à 22:40
non, juste tu ouvre le projet .vbp et tu le compile (fichier -> créer l'executable).
c'est tout, apres tu utilises.
flamcy
Messages postés58Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention14 avril 2009 20 juin 2007 à 22:09
ok merci,
mais son code, je le met où?
dans le module?
cs_kazimir
Messages postés26Date d'inscriptionmercredi 23 octobre 2002StatutMembreDernière intervention 4 novembre 2008 20 juin 2007 à 19:43
Yop
pour executer un prog vb sans vb6FR.dll, il faut:
- compiler d'abord l'exe avec les sources fournies par Ashtheone.
- sur un pc ayant vb6FR.dll, faire une copie de ce programme (le but etant de virer sa dépendance a vb6Fr.dll, et oui lui aussi l'integre).
- une fois que le prog est "dépoluer", tu pourras dépoluer tous les prog vb sur le pc du bureau (moi, j'ai fais comme ca et ca marche nickel.)
@++
flamcy
Messages postés58Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention14 avril 2009 20 juin 2007 à 18:56
slt à tous,
je viens de tout lire et je suis perdu au final.
le + simple pour executer un exe sur un ordi qui n'a pas vb6FR.dll et pas les droit d'admin (comme moi au boulo) c'est quoi ?
cs_isokar
Messages postés11Date d'inscriptionlundi 20 février 2006StatutMembreDernière intervention24 mars 2010 29 déc. 2006 à 16:05
salut a tous
bon
je voulais savoir si c'est par ce que je suis nul ou quoi mais je ne peu pas executer le prog car il me met des erreurs, y a t'il une version plus a jour?
vicosta
Messages postés178Date d'inscriptionlundi 5 juin 2006StatutMembreDernière intervention30 novembre 2011 5 juin 2006 à 21:00
voila voila, merci et merci encore ami Ashtheone
avec ça, on peut distribuer notre programme de façon très légére
l'executable suffit
normalment msvbvm60.dll est déjà sur tous les ordis, mais pas vb6fr.dll !!!!
ceux qui ne voient pas d'utilité, peuvent éssayer de renommer le fichier vb6fr.dll en vb66fr.dll et ils veront que un fichier d'installation occupera, au moins, 1.3 mo de plus !!!!!!
merci encore pour l'idéa
felicitations Ashtheone
cs_kazimir
Messages postés26Date d'inscriptionmercredi 23 octobre 2002StatutMembreDernière intervention 4 novembre 2008 3 févr. 2006 à 20:02
si je sais lire, c'est normal, sous xp, c'est pas le bon chemin du dossier system32.
sous NT/2000 : C :\WINNT\system32\vb6fr.dll
sous XP: C :\Windows\system32\vb6fr.dll
verifie de donner le chemin relatif si tu appelles la dll depuis le code.
ou bien de modifier ton script d'empaquetage afin qu'il place la dll dans le bon dossier.
mosquitout
Messages postés12Date d'inscriptiondimanche 26 octobre 2003StatutMembreDernière intervention 2 janvier 2013 3 févr. 2006 à 19:27
Bonjour,
J'ai fait une appli vb et quand je l'install sur un poste xp j'ai l'erreur vb6fr.dll manquante ! est-ce que je peux résoudre le probleme en utilisant l'utilitaire ici présenté ?
C.a.d en lancant peut-être en premier cet utilitaire puis mon appli ?
(quand je met la dll dans mon package d'install, il me renvoi : C :\WINNT\system32\vb6fr.dll
Impossible d'enregistrer la dll ou l'ocx ; la fonction exportée DllRegisterServeur n'a pas été trouvée.)
mosquitout
Messages postés12Date d'inscriptiondimanche 26 octobre 2003StatutMembreDernière intervention 2 janvier 2013 3 févr. 2006 à 18:50
Bonjour,
J'ai fait une appli vb et quand je l'install sur un poste xp j'ai l'erreur vb6fr.dll manquante ! est-ce que je peux résoudre le probleme en utilisant l'utilitaire ici présenté ?
C.a.d en lancant peut-être en premier cet utilitaire puis mon appli ?
(quand je met la dll dans mon package d'install, il me renvoi : C :\WINNT\system32\vb6fr.dll
Impossible d'enregistrer la dll ou l'ocx ; la fonction exportée DllRegisterServeur n'a pas été trouvée.)
SgtKabukinan
Messages postés106Date d'inscriptionlundi 20 septembre 2004StatutMembreDernière intervention23 janvier 2010 21 nov. 2005 à 12:19
hum... jusqu'à preuve du contraire il y a une présemption d'abscence sur les versions WIN inférieure à Win 2000
cs_kazimir
Messages postés26Date d'inscriptionmercredi 23 octobre 2002StatutMembreDernière intervention 4 novembre 2008 20 nov. 2005 à 19:55
Question:
la dll MSVBVM60.DLL est elle reelement presente par defaut dans toutes les version de windows (xp principalement) ?
merci de me confirmer
@++
cs_kazimir
Messages postés26Date d'inscriptionmercredi 23 octobre 2002StatutMembreDernière intervention 4 novembre 2008 20 nov. 2005 à 19:13
Yop, all
ce code peut etre tres tres utile dans mon cas, car je ne peux pas utiliser mes programmes au travail a cause de cette foutue vb6fr.dll
en effet, mon poste n'etant qu'une station de travail, il m'est impossible d'ecrire dans le dossier windows, donc impossible d'y placer quelques dll que ce soit.
toutes les dll appellées depuis les prog peuvent etre deportées sauf (principalement) vb6fr.dll
si ce code peut m'aider a utiliser mes applis, c'est genial et pour faire taire Sirocooo, sa solution N'EST PAS APPLICABLE POUR TOUS (cf moi !)
@++
SgtKabukinan
Messages postés106Date d'inscriptionlundi 20 septembre 2004StatutMembreDernière intervention23 janvier 2010 16 nov. 2005 à 16:04
amen !
2parmelin
Messages postés11Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention22 août 2007 29 juil. 2005 à 20:34
Beaucoup de messages sur ce sujet et parfois des confusions.
Voici ce que je sais du sujet, si jamais ça peut aider.
- VB6FR.DLL contient en effet les messages d'erreurs en FR comme cela a été justement dit on peut donc s'en passer
- Copier vb6fr dans un dossier systeme marche, regsvr32 n'est pas nécessaire MAIS, cette opération demande les droits admin sur la machine donc ceux qui pensent regler le probleme ainsi sont coincés (sauf si le programme ne sort pas de chez vous)
- La solution la plus simple consiste en effet a compiler l'EXE avec la version GB
- XP et Windows 2000 contiennent le runtime de VB6 MsVbVm60.dll et peuvent lancer des programmes VB directement (sauf si appel a VB6FR.DLL !) et appel a tout autre OCX ou DLL VB (les DLL compilées du C ne demande pas de regsvr et peuvent etre appelées directement du code VB)
- Faire un EXE sans autre OCX ou DLL vb le rend directement utilisable par toutes les versions de 2000 ou XP et permet de lancer le programme sans droits admin
- Pour les 95 et 98 chaque utilisateur est admin de son poste et peut donc installer tout ce qu'il veut, probleme est moins génant.
- MsVbVm60.dll n'est pas bypassable car votre EXE y fera forcément appel (déjà ecrit plus haut)
- Le programme Fusion que je citais plus haut demande les droits admins pour fonctionner (il enregistre les DLL au lancement de l'EXE) et peut etre bloqué par des antivirus (McAfee par exemple)
- Il y a des fois ou l'on ne peut pas faire de SETUP (progamme qui se lance au lancement d'un CD par exemple).
A+
Vedlen
Messages postés360Date d'inscriptionmardi 14 octobre 2003StatutMembreDernière intervention 7 septembre 2009 25 juin 2005 à 12:33
Ok donc si je résume l'utilisation de msvbvm60.dll au lieu de vb6fr.dll permet de se passer d'une dll pour ceux qui ont Win XP.
Ashtheone
Messages postés20Date d'inscriptionsamedi 2 août 2003StatutMembreDernière intervention19 mai 2004 25 mars 2005 à 09:37
Bonjour michel_j,
Le zip contient tout ce dont tu as besoin.
Il te faut juste un compilateur VB6 pour générer l'application.
Après, c'est très simple : tu lances l'application, une fenêtre s'ouvre te permettant de sélectionner l'exécutable sur lequel tu veux supprimer la référence à la DLL. Une fois le fichier choisi, click sur Ok. Un message t'averti pour te dire que la référence à la DLL à bien été supprimée ou non.
C'est tout! ;o)
cs_michel_j
Messages postés1Date d'inscriptionjeudi 24 mars 2005StatutMembreDernière intervention24 mars 2005 24 mars 2005 à 18:00
Bonjour messieur, je découvre aujourd'hui votre site web et laissez moi vous dire qu'on en trouve des solutions ici. Je ne suis pas un développeur comme vous mais bien un fanatique d'ordinateur qui se débrouille assez bien pour les réparer. J'ai un probleme avec le fameux VB6FR.DLL et votre astuces me semble être ce que j'ai besoin. Mais il y a un Hic! je ne sais pas quoi faire avec . Pourriez vous me guider dans la manière de l'appliquer a mon windows XP pro.
merci
Michel_J
dionysos6868
Messages postés310Date d'inscriptionjeudi 4 septembre 2003StatutMembreDernière intervention 9 juin 20051 11 janv. 2005 à 19:49
bonjour a tous juste pour rectifier ce que LuTo a écris
@if not exist %SystemRoot%\system32\VB6FR2.dll copy "VB6FR2.dll" "%SystemRoot%\system32\VB6FR2.dll"
voila
damdam04
Messages postés27Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention20 novembre 2006 11 août 2004 à 18:28
trop de la balle ton prog ....
merci beaucoup je galèrais depuis 4 jours pour arriver à contourner ce problème...
merci
et bonne continuation
AeTuOq28
Messages postés22Date d'inscriptionsamedi 2 août 2003StatutMembreDernière intervention26 octobre 2004 9 juil. 2004 à 16:32
Et comment on fait pour virer les référence au fichier vraiment génant (msvbvm60.dll).
2parmelin
Messages postés11Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention22 août 2007 21 févr. 2004 à 22:46
tss tss tsss
moi je suis partisan des solutions simples. J'utilise bitart fusion ainsi je ne ditribue qu'un EXE avec toute les DLL dedans (zippé bien sur). Ideal pour les diffusions. Il est un peu vieux comme prog mais efficace. maintenant il y en a d'autre comme powerwrap ou thinstall.
Mais, j'avoue, que tout effort pour se creuser la tete en programmation ne peut etre que bon.
Bravo pour l'effort
2parmelin
Messages postés11Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention22 août 2007 21 févr. 2004 à 22:33
tss tss tsss
moi je suis partisan des solutions simples. J'utilise bitart fusion ainsi je ne ditribue qu'un EXE avec toute les DLL dedans (zippé bien sur). Ideal pour les diffusions. Il est un peu vieux comme prog mais efficace. maintenant il y en a d'autre comme powerwrap ou thinstall.
Mais, j'avoue, que tout effort pour se creuser la tete en programmation ne peut etre que bon.
Bravo pour l'effort
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 19 févr. 2004 à 14:06
lol vous êtes encore un peu bouché je crois !
Le fichiers vb6fr.dll sert de bibliotheque pour la traductions des messages d'erreur en français !
Elle peut être remplacer comme le montre AshtheOne par msvbvm60.dll ce qui vas remplacer tout les textes en francais
venant de vb6fr en anglais avec msvbvm
Cela dit msvbvm60.dll ne peut etre remplacer car c'est la machine virtuel de vb c'est elle qui gere tout les objets vb form control etc...
ainsi que la gestion de la memoire des chaine de caractere etc..
donc a moins de reecrire entierement un compilateur vb ou de reecrire cette machine virtuelle il n'est pas possible de s'en passer !!!
De plus msvbvm60.dll est installé dans la version standard de winXP
donc s'il on supprime la reference a vb6fr.dlll le prog marche sans probleme sur une installation classique ! sauf si vous ajouté d'autre reference dans ce cas vous n'avez qu'a faire un package d'install.
Alors arretez de réver !
;-P
@+
hackademius
Messages postés172Date d'inscriptionmercredi 29 janvier 2003StatutMembreDernière intervention24 février 2008 19 févr. 2004 à 13:58
et n'y aurai t'il pas moyen de virer les referenses completement car la dllne dois pas servir a grand chose dans cette hstoire , peu etre ppour les fonctions msgbox ou d'affichage , je ne c pas mais ca ne dois pas etre grandiose .
en C , un programme ne fais appel a aucune dll , je crois , alors pk vb en aurai besoins ? ou alors il faudrai implanter les fonctions de la dll , dans l'executable lui meme .... mais c pas gagné ...
@+
cs_LuTo
Messages postés102Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention 6 juin 2010 19 févr. 2004 à 08:40
Selon une suggestion de BasicInstinct, une solution simple pour resoudre le probleme de compatibilite est de faire un batch qui copie VB6FR.DLL dans le bon repertoire avant d'executer MonProg.exe.
Exemple :
@echo Installation en cours...
@if not exist %SystemRoot%/system32/vb6fr.dll copy VB6FR.DLL %SystemRoot%/system32/VB6FR.DLL
@call MonProg.exe
Certes, ca fait clignoter une fenetre DOS a la premiere installation, mais c'est pas mal, non ?
Ashtheone
Messages postés20Date d'inscriptionsamedi 2 août 2003StatutMembreDernière intervention19 mai 2004 16 févr. 2004 à 13:31
Merci pour vos commentaires! :o)
AeTuOq28
Messages postés22Date d'inscriptionsamedi 2 août 2003StatutMembreDernière intervention26 octobre 2004 14 févr. 2004 à 10:48
Ce qui serai bien c'est de viré les références à MSVBVM60.DLL
cs_bigane
Messages postés46Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention12 février 2004 12 févr. 2004 à 21:53
Tiens, cind lignes qui devrait t'aider dans la recherche du Graal :
Open cdg.FileName For Binary As #1
buffer = String(LOF(1), 0)
Get #1, , buffer
Put #1, 1, Replace(buffer,"VB6FR.DLL" & vbnullchar & vbnullchar & vbnullchar,"MSVBVM60.DLL")
Close #1
Je ne l'ai pas testé, je n'ai pas VB6 sur ce poste, mais cela devrait fonctionner. A condition que la fonction replace (VBA) soit présente dans ton VB.
A+
cs_LuTo
Messages postés102Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention 6 juin 2010 12 févr. 2004 à 12:30
Microfunn > Par pitie, si tu trouves ce prog, envoie le moi/nous !!!
cs_microfunn
Messages postés1Date d'inscriptionlundi 17 mars 2003StatutMembreDernière intervention12 février 2004 12 févr. 2004 à 11:31
Yo !
J'ai tout lu !!!!...
Ca me rapelle mes debut de dev sur Amiga, faire des chose compliqué pour le plaisir de faire des chose compliqué ^^
J'ai rien contre mais bon, pour ta solution voila : Il existe un programme qui permet la fusion des dependances comme les ocxs et dlls, donc plutot que de rendre un log vb incompatible je te propose cette solution, seulement je me souviens plus du nom du Programme faut faire une recherche, ou dev dans cette direction.
Voila une idée de Proget commun !.
[Micro]
cs_LuTo
Messages postés102Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention 6 juin 2010 12 févr. 2004 à 02:17
shadowmoy > As-tu essaye avec la version US ? Es-tu sur que la version US de VB6 n'utilise pas une autre DLL du genre VB6EN.DLL ou un truc dans le meme genre ?
Mon but est de faire un installeur, qui doit donc pouvoir marcher a partir du CD sans le moindre fichier VB sur le disque cible (comme le SETUP.EXE de l'assistant de deploiement, par ex).
PHILIPPECHERON
Messages postés1Date d'inscriptionvendredi 16 mai 2003StatutMembreDernière intervention11 février 2004 11 févr. 2004 à 14:07
Pour en revenir aux deux commentaires parasites, ce sont bien CR et LF.
Ces deux caracteres sont toujours rajoutés a la fin d'une ligne quand tu fais un 'print'.
Si tu n'en veux pas, tu fais PRINT #Num, Chaine;
Le ';' a la fin evite le CRLF.
C'est un vieil heritage du basic d'il y a 20 ans, car a l'origine, la fonction print permettait d'ecrire sur l'ecran et le CRLF faisait passer a la ligne suivante.
CQFD
shadowmoy
Messages postés340Date d'inscriptionjeudi 25 juillet 2002StatutMembreDernière intervention25 août 2007 8 févr. 2004 à 19:20
le plus simple est encore d'avoir la version us de vb6 ^^ et la plus de vb6fr.dll héhé
Ashtheone
Messages postés20Date d'inscriptionsamedi 2 août 2003StatutMembreDernière intervention19 mai 2004 7 févr. 2004 à 11:53
EBArtSoft > Très élégante ta solution!
Je l'ai intégré en source complémentaire dans mon code... Merci à toi.
Cyberdevil > Merci de m'avoir éclairé... :o)
khaleid > qu'essais tu de nous dire? Je n'ai pas très bien compris...
khaleid
Messages postés39Date d'inscriptionmercredi 4 juillet 2001StatutMembreDernière intervention 8 avril 20141 6 févr. 2004 à 23:45
l'interet du code est la méthode de faire des modification dans un exe sans l'altéré (crack)
essayer ce truc :
dans les exe compilé avec vb5 remplacer la chaine MSVBVM50.DLL
par MSVBVM60.DLL !!!
darkteam
Messages postés46Date d'inscriptionmardi 9 décembre 2003StatutMembreDernière intervention18 juin 2010 6 févr. 2004 à 19:15
c'est vrai micro$oft fait vraiment des logiciels bourré de spyware et de faille de sécurité majeure alors ca ne m'etonne pas qu'il fasse aussi des dll inutiles...
Cyberdevil
Messages postés483Date d'inscriptionmardi 10 juillet 2001StatutMembreDernière intervention12 juillet 2006 6 févr. 2004 à 19:00
Pour reprendre la discussion a propos du soit disant bug :
(Je cite)
' Réécriture de l'éxécutable
intFile = FreeFile
Open cdg.FileName For Output As #intFile
Print #intFile, "" & chaine
Close #intFile
Au moment de la fermeture du fichier, cette fonction rajoute
2 octets indésirables (0D 0A) à la fin de celui ci.
(fin de la citation ;)
Les 2 octets présent sont normal car un print écrit une ligne dans un fichier avec un CrLf a la fin (d'ou les 2octet) pour écrire un exécutable il faut louvrir en mod binaire et écrire avec Put
Genre:
' Réécriture de l'éxécutable
intFile = FreeFile
Open cdg.FileName For Binary Access Write As #intFile
Put #intFile, , chaine
Close #intFile
Voila ;)
A+
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 6 févr. 2004 à 18:30
Pour info vb6fr.dll n'exporte aucune fonction c'est juste
un support de langue pour l'affichage des erreurs !
Sirocooo> installer une dll c'est bien ... s'en passer c'est mieu :-P
la boucle tu peut l'executer aussi comme ceci :
Open c.FileName For Binary As #1
s = String(LOF(1), 0)
Get #1, , s
Do
i = i + 1
i = InStr(i, s, "VB6FR.DLL")
If i Then Mid(s, i, 12) = "MSVBVM60.DLL"
Loop While i
Put #1, 1, s
Close #1
Sirocooo> tu sais microsoft fais des choses bizzares de temps à autres,voir meme ridicules et truffées de bugs, après il faut des services packs de 100Megs pour corriger une infime partie de code baclée... loooool !!! Il sont marrants chez Microsoft !!
Ashtheone
Messages postés20Date d'inscriptionsamedi 2 août 2003StatutMembreDernière intervention19 mai 2004 6 févr. 2004 à 14:37
Merci pour tes bons conseils :o)
Sirocooo
Messages postés412Date d'inscriptionmercredi 19 décembre 2001StatutMembreDernière intervention 7 avril 20081 6 févr. 2004 à 14:25
c'est bien continu... bon travail...
Je voulais simplement mettre en évidence que si vb6fr.dll n'est pas
utile, Miscrosoft ne l'aurrait pas crée.
bon courage
Ashtheone
Messages postés20Date d'inscriptionsamedi 2 août 2003StatutMembreDernière intervention19 mai 2004 6 févr. 2004 à 14:18
Sirocooo > C'est vrai que c'est le plus simple! Je suis d'accord avec toi.
En faite, si j'ai pondu cette appli, c'est pour rendre relativement portable des petits progs qui triplent de volume si on les envoies avec DLL. :o)
Et puis, c'est toujours sympa de se prendre la tête sur des bouts de codes. Ca peut toujours être réutilisé ailleurs quand c'est bien fichu...
Sirocooo
Messages postés412Date d'inscriptionmercredi 19 décembre 2001StatutMembreDernière intervention 7 avril 20081 6 févr. 2004 à 13:55
et les gas ne vous agacez pas, installé vb6fr.dll et ca marche !!!!
ca coute 10 secondes de temps pour l'installé
Ashtheone
Messages postés20Date d'inscriptionsamedi 2 août 2003StatutMembreDernière intervention19 mai 2004 6 févr. 2004 à 13:43
Print #intFile, "" & Left (chaine, len(chaine) - 2)
Pardon...
Ashtheone
Messages postés20Date d'inscriptionsamedi 2 août 2003StatutMembreDernière intervention19 mai 2004 6 févr. 2004 à 13:41
legion91 > Ca ne vient pas de la variable chaine.
J'ai fait un essaie avec :
Print #intFile, "" & Right (chaine, len(chaine) - 2)
chaine est bien perd 2 octets, mais les 2 octets parasytes s'y
concatène à la suite...
hackademius
Messages postés172Date d'inscriptionmercredi 29 janvier 2003StatutMembreDernière intervention24 février 2008 6 févr. 2004 à 13:32
moi , je n'ai pas les dlls vb6fr ni msvbvm60 sur mon dur , j'ai win 98 , et il ne sont pas installés au depart !
donc ca ne marche pas !
c bien d'avoir essayé quand meme
cs_legion91
Messages postés216Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention15 décembre 2010 6 févr. 2004 à 13:31
C'est ken tu utilise write #1 ke sa ajoute les guillemets, sinon pour le bug heu jai pas regarder mais sa me semble bizar, sa ne peut k venir de ta valeur Chaine.
Sirocooo
Messages postés412Date d'inscriptionmercredi 19 décembre 2001StatutMembreDernière intervention 7 avril 20081 6 févr. 2004 à 12:31
moi j'ai trouver un truc plus facile.
Si VB6fr.dll n'est pas présente et bien je l'installe...
Ca marche à tous les coups et ya pas de bugs.
Quel gaspillage de temps !!!!
Ashtheone
Messages postés20Date d'inscriptionsamedi 2 août 2003StatutMembreDernière intervention19 mai 2004 6 févr. 2004 à 11:22
legion91 > Je t'avoue que j'ai repiqué à l'arrache le code du Common Control sans m'interresser au cancelerror et aux flag.
Je vais jetter un coup d'oeil sur ces propriétés.
... et tu as raison, quand quelquechose me gonfle, ma solution de fuite et un bon gros "On Error Goto" bien gras... C'est ma tendance programmeur du dimanche... :o)
Mais bon, je vais faire un effort...
A par ça, Je viens de découvrir un petit bug dans la source lors
de l'exécution de la fonction suivante :
' Réécriture de l'éxécutable
intFile = FreeFile
Open cdg.FileName For Output As #intFile
Print #intFile, "" & chaine
Close #intFile
Au moment de la fermeture du fichier, cette fonction rajoute
2 octets indésirables (0D 0A) à la fin de celui ci.
Ceci n'affecte en rien le fonctionnement de l'éxécutable, mais je
m'interroge sur la raison de l'apparition de ces deux octets...
Peut être pourrais tu m'éclairer legion91?
Je suppose que c'est "Print" et sa mauvaise habitude d'insérer des guillemets...
Tilois > Connaitrais tu une DLL plus générique que MSVBVM60.DLL?
MSVBVM50.DLL peut être?
khaleid > Je pense que Tilois peut nous éclairer tout deux...
Tilois
Messages postés721Date d'inscriptiondimanche 10 juin 2001StatutMembreDernière intervention27 mars 20117 5 févr. 2004 à 19:47
Asththone > MSVBVM60.DLL n'est pas a proprement parler une DLL classique de windows puisque les versions de windows avant 2000 n'en sont pas pourvue en standard.
khaleid
Messages postés39Date d'inscriptionmercredi 4 juillet 2001StatutMembreDernière intervention 8 avril 20141 5 févr. 2004 à 19:45
tres bonne idée ...mais pourqoui un exe fait une reference a un dll si il en a pas besoin ?
peut on faire de meme avec d'autre dll vb ?
cs_legion91
Messages postés216Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention15 décembre 2010 5 févr. 2004 à 17:05
Si j'ai mis une detection du fichier c pas sans raison en effet (je site ton code):
With cdg
.CancelError = True
.Flags = &H80000 Or &H4 Or &H2
On Error GoTo ErrHandler
End With
-.cancelerror = true 'je ne sais moi meme c k sa veut dire un comentaire stp
- flag idem
- et On Error GoTo ErrHandler oula sa c du dans le cas ou sa plante ?, si ta pas selectionnez un bon fichier hehe fo mettre ma fonction dir ;-)
Ashtheone
Messages postés20Date d'inscriptionsamedi 2 août 2003StatutMembreDernière intervention19 mai 2004 5 févr. 2004 à 15:48
A noter msvbvm60.dll est une dll classique de windows, donc sa taille n'a pas d'importance...
Pour le reste, je suis d'accord que mon code peu être amélioré.
Il est sans prétention.
Je l'ai pondu hier soir parceque j'avais besoin d'un petit utilitaire de ce style.
Je n'ai pas trop pensé l'algo, mais c'est propre c'est sans bavure...
Merci en tout cas pour vos critiques constructives :o)
abhoryo
Messages postés28Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention29 août 2008 5 févr. 2004 à 14:27
je pense qu'un code comme ca peu etre pratique mais quand on pense que vb6fr.dll ne fait que 116Ko (20Ko compresé) comparé à msvbvm60.dll qui est 10 fois plus gros. Enfin voila sinon je trouve ton code bien monté.
cs_legion91
Messages postés216Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention15 décembre 2010 5 févr. 2004 à 14:19
oua le truc de deman, alors toi t'aime ce ki est compliker pour remplacer une donner par une autre ben o lieu de faire 10 mille ligne pour ouvrir un fichier deplus faudrait deja savoir si le fichier est bien existant et oui ya un bouton annuler dans le common control donc voici mon code:
if dir(cdg.filename,vbNormal Or vbReadOnly Or vbHidden Or vbSystem Or vbArchive) <> vbnullstring then
dim Nr as string
dim Texte1 as string
Nr = FreeFile 'remplace #1 ou la c un chiffre aleatoire
Open sFile For Binary As #Nr 'on l'ouvre
Texte1 = Input(LOF(1), #Nr) 'tout le contenu du fichier dans la string sbin
Close #Nr 'on ferme le fichier
'on remplace
Texte1 = replace(Texte1,"vb6fr.dll","msvbvm60.dll")
nr = freefile
Open cdg.filename For Output As #nr
Print #nr, "" & Texte1
Close #nr
4 avril 2013 à 18:57
Pourquoi faire compliqué alors que c'est très simple !
Il suffit de RE-Compiler avec VB6 English... c'est tout, mais
CA NE POSE PLUS AUCUN PROBLEME DE DEPENDANCE A vb6FR.dll
Best regards
26 nov. 2007 à 19:57
ce prog marche impec ! le reste on s'en fout !
bravo Ashtheone, et allez donc au champignons, ça vous changera les idées !
19 juil. 2007 à 09:32
A noter une autre utilisation amusante, remplacer les appels a la MsVbVm60.dll pour une autre dll. Quel intérêt ? Simplement le fait de pouvoir copier la MsVbVm60.dll en incognito.dll, par exemple, et ainsi isoler votre programme de tout problème lié a la dll du VB6.
J'ai utilisé cette technique pour éviter qu'un de mes programmes soit bloqué par quelqu'un qui virait la DLL pour éliminer le démarrage de tous programmes VB de sa machine.
20 juin 2007 à 23:09
en + je ne sais plus quel code faut mettre ni où le mettre.
il y en a de trop dans tous les coins avec des modif...
Puis faut aussi prendre en compte que je suis loin d'etre expert en vb. Je fais des tit programmes tout doucement et j'essaie de progresser mais ce pb, m'ennui vraiment et je ne suis pas le seul apparement.
rien de tel que quelqu'un qui apprecie votre travail, non?
c'est pourquoi il serait bien d'avoir une solution qui serve de référence.
20 juin 2007 à 22:40
c'est tout, apres tu utilises.
20 juin 2007 à 22:09
mais son code, je le met où?
dans le module?
20 juin 2007 à 19:43
pour executer un prog vb sans vb6FR.dll, il faut:
- compiler d'abord l'exe avec les sources fournies par Ashtheone.
- sur un pc ayant vb6FR.dll, faire une copie de ce programme (le but etant de virer sa dépendance a vb6Fr.dll, et oui lui aussi l'integre).
- une fois que le prog est "dépoluer", tu pourras dépoluer tous les prog vb sur le pc du bureau (moi, j'ai fais comme ca et ca marche nickel.)
@++
20 juin 2007 à 18:56
je viens de tout lire et je suis perdu au final.
le + simple pour executer un exe sur un ordi qui n'a pas vb6FR.dll et pas les droit d'admin (comme moi au boulo) c'est quoi ?
29 déc. 2006 à 16:05
bon
je voulais savoir si c'est par ce que je suis nul ou quoi mais je ne peu pas executer le prog car il me met des erreurs, y a t'il une version plus a jour?
5 juin 2006 à 21:00
avec ça, on peut distribuer notre programme de façon très légére
l'executable suffit
normalment msvbvm60.dll est déjà sur tous les ordis, mais pas vb6fr.dll !!!!
ceux qui ne voient pas d'utilité, peuvent éssayer de renommer le fichier vb6fr.dll en vb66fr.dll et ils veront que un fichier d'installation occupera, au moins, 1.3 mo de plus !!!!!!
merci encore pour l'idéa
felicitations Ashtheone
3 févr. 2006 à 20:02
sous NT/2000 : C :\WINNT\system32\vb6fr.dll
sous XP: C :\Windows\system32\vb6fr.dll
verifie de donner le chemin relatif si tu appelles la dll depuis le code.
ou bien de modifier ton script d'empaquetage afin qu'il place la dll dans le bon dossier.
3 févr. 2006 à 19:27
J'ai fait une appli vb et quand je l'install sur un poste xp j'ai l'erreur vb6fr.dll manquante ! est-ce que je peux résoudre le probleme en utilisant l'utilitaire ici présenté ?
C.a.d en lancant peut-être en premier cet utilitaire puis mon appli ?
(quand je met la dll dans mon package d'install, il me renvoi : C :\WINNT\system32\vb6fr.dll
Impossible d'enregistrer la dll ou l'ocx ; la fonction exportée DllRegisterServeur n'a pas été trouvée.)
3 févr. 2006 à 18:50
J'ai fait une appli vb et quand je l'install sur un poste xp j'ai l'erreur vb6fr.dll manquante ! est-ce que je peux résoudre le probleme en utilisant l'utilitaire ici présenté ?
C.a.d en lancant peut-être en premier cet utilitaire puis mon appli ?
(quand je met la dll dans mon package d'install, il me renvoi : C :\WINNT\system32\vb6fr.dll
Impossible d'enregistrer la dll ou l'ocx ; la fonction exportée DllRegisterServeur n'a pas été trouvée.)
21 nov. 2005 à 12:19
20 nov. 2005 à 19:55
la dll MSVBVM60.DLL est elle reelement presente par defaut dans toutes les version de windows (xp principalement) ?
merci de me confirmer
@++
20 nov. 2005 à 19:13
ce code peut etre tres tres utile dans mon cas, car je ne peux pas utiliser mes programmes au travail a cause de cette foutue vb6fr.dll
en effet, mon poste n'etant qu'une station de travail, il m'est impossible d'ecrire dans le dossier windows, donc impossible d'y placer quelques dll que ce soit.
toutes les dll appellées depuis les prog peuvent etre deportées sauf (principalement) vb6fr.dll
si ce code peut m'aider a utiliser mes applis, c'est genial et pour faire taire Sirocooo, sa solution N'EST PAS APPLICABLE POUR TOUS (cf moi !)
@++
16 nov. 2005 à 16:04
29 juil. 2005 à 20:34
Voici ce que je sais du sujet, si jamais ça peut aider.
- VB6FR.DLL contient en effet les messages d'erreurs en FR comme cela a été justement dit on peut donc s'en passer
- Copier vb6fr dans un dossier systeme marche, regsvr32 n'est pas nécessaire MAIS, cette opération demande les droits admin sur la machine donc ceux qui pensent regler le probleme ainsi sont coincés (sauf si le programme ne sort pas de chez vous)
- La solution la plus simple consiste en effet a compiler l'EXE avec la version GB
- XP et Windows 2000 contiennent le runtime de VB6 MsVbVm60.dll et peuvent lancer des programmes VB directement (sauf si appel a VB6FR.DLL !) et appel a tout autre OCX ou DLL VB (les DLL compilées du C ne demande pas de regsvr et peuvent etre appelées directement du code VB)
- Faire un EXE sans autre OCX ou DLL vb le rend directement utilisable par toutes les versions de 2000 ou XP et permet de lancer le programme sans droits admin
- Pour les 95 et 98 chaque utilisateur est admin de son poste et peut donc installer tout ce qu'il veut, probleme est moins génant.
- MsVbVm60.dll n'est pas bypassable car votre EXE y fera forcément appel (déjà ecrit plus haut)
- Le programme Fusion que je citais plus haut demande les droits admins pour fonctionner (il enregistre les DLL au lancement de l'EXE) et peut etre bloqué par des antivirus (McAfee par exemple)
- Il y a des fois ou l'on ne peut pas faire de SETUP (progamme qui se lance au lancement d'un CD par exemple).
A+
25 juin 2005 à 12:33
25 mars 2005 à 09:37
Le zip contient tout ce dont tu as besoin.
Il te faut juste un compilateur VB6 pour générer l'application.
Après, c'est très simple : tu lances l'application, une fenêtre s'ouvre te permettant de sélectionner l'exécutable sur lequel tu veux supprimer la référence à la DLL. Une fois le fichier choisi, click sur Ok. Un message t'averti pour te dire que la référence à la DLL à bien été supprimée ou non.
C'est tout! ;o)
24 mars 2005 à 18:00
merci
Michel_J
11 janv. 2005 à 19:49
@if not exist %SystemRoot%\system32\VB6FR2.dll copy "VB6FR2.dll" "%SystemRoot%\system32\VB6FR2.dll"
voila
11 août 2004 à 18:28
merci beaucoup je galèrais depuis 4 jours pour arriver à contourner ce problème...
merci
et bonne continuation
9 juil. 2004 à 16:32
21 févr. 2004 à 22:46
moi je suis partisan des solutions simples. J'utilise bitart fusion ainsi je ne ditribue qu'un EXE avec toute les DLL dedans (zippé bien sur). Ideal pour les diffusions. Il est un peu vieux comme prog mais efficace. maintenant il y en a d'autre comme powerwrap ou thinstall.
Mais, j'avoue, que tout effort pour se creuser la tete en programmation ne peut etre que bon.
Bravo pour l'effort
21 févr. 2004 à 22:33
moi je suis partisan des solutions simples. J'utilise bitart fusion ainsi je ne ditribue qu'un EXE avec toute les DLL dedans (zippé bien sur). Ideal pour les diffusions. Il est un peu vieux comme prog mais efficace. maintenant il y en a d'autre comme powerwrap ou thinstall.
Mais, j'avoue, que tout effort pour se creuser la tete en programmation ne peut etre que bon.
Bravo pour l'effort
19 févr. 2004 à 14:06
Le fichiers vb6fr.dll sert de bibliotheque pour la traductions des messages d'erreur en français !
Elle peut être remplacer comme le montre AshtheOne par msvbvm60.dll ce qui vas remplacer tout les textes en francais
venant de vb6fr en anglais avec msvbvm
Cela dit msvbvm60.dll ne peut etre remplacer car c'est la machine virtuel de vb c'est elle qui gere tout les objets vb form control etc...
ainsi que la gestion de la memoire des chaine de caractere etc..
donc a moins de reecrire entierement un compilateur vb ou de reecrire cette machine virtuelle il n'est pas possible de s'en passer !!!
De plus msvbvm60.dll est installé dans la version standard de winXP
donc s'il on supprime la reference a vb6fr.dlll le prog marche sans probleme sur une installation classique ! sauf si vous ajouté d'autre reference dans ce cas vous n'avez qu'a faire un package d'install.
Alors arretez de réver !
;-P
@+
19 févr. 2004 à 13:58
en C , un programme ne fais appel a aucune dll , je crois , alors pk vb en aurai besoins ? ou alors il faudrai implanter les fonctions de la dll , dans l'executable lui meme .... mais c pas gagné ...
@+
19 févr. 2004 à 08:40
Exemple :
@echo Installation en cours...
@if not exist %SystemRoot%/system32/vb6fr.dll copy VB6FR.DLL %SystemRoot%/system32/VB6FR.DLL
@call MonProg.exe
Certes, ca fait clignoter une fenetre DOS a la premiere installation, mais c'est pas mal, non ?
16 févr. 2004 à 13:31
14 févr. 2004 à 10:48
12 févr. 2004 à 21:53
Open cdg.FileName For Binary As #1
buffer = String(LOF(1), 0)
Get #1, , buffer
Put #1, 1, Replace(buffer,"VB6FR.DLL" & vbnullchar & vbnullchar & vbnullchar,"MSVBVM60.DLL")
Close #1
Je ne l'ai pas testé, je n'ai pas VB6 sur ce poste, mais cela devrait fonctionner. A condition que la fonction replace (VBA) soit présente dans ton VB.
A+
12 févr. 2004 à 12:30
12 févr. 2004 à 11:31
J'ai tout lu !!!!...
Ca me rapelle mes debut de dev sur Amiga, faire des chose compliqué pour le plaisir de faire des chose compliqué ^^
J'ai rien contre mais bon, pour ta solution voila : Il existe un programme qui permet la fusion des dependances comme les ocxs et dlls, donc plutot que de rendre un log vb incompatible je te propose cette solution, seulement je me souviens plus du nom du Programme faut faire une recherche, ou dev dans cette direction.
Voila une idée de Proget commun !.
[Micro]
12 févr. 2004 à 02:17
Mon but est de faire un installeur, qui doit donc pouvoir marcher a partir du CD sans le moindre fichier VB sur le disque cible (comme le SETUP.EXE de l'assistant de deploiement, par ex).
11 févr. 2004 à 14:07
Ces deux caracteres sont toujours rajoutés a la fin d'une ligne quand tu fais un 'print'.
Si tu n'en veux pas, tu fais PRINT #Num, Chaine;
Le ';' a la fin evite le CRLF.
C'est un vieil heritage du basic d'il y a 20 ans, car a l'origine, la fonction print permettait d'ecrire sur l'ecran et le CRLF faisait passer a la ligne suivante.
CQFD
8 févr. 2004 à 19:20
7 févr. 2004 à 11:53
Je l'ai intégré en source complémentaire dans mon code... Merci à toi.
Cyberdevil > Merci de m'avoir éclairé... :o)
khaleid > qu'essais tu de nous dire? Je n'ai pas très bien compris...
6 févr. 2004 à 23:45
essayer ce truc :
dans les exe compilé avec vb5 remplacer la chaine MSVBVM50.DLL
par MSVBVM60.DLL !!!
6 févr. 2004 à 19:15
6 févr. 2004 à 19:00
(Je cite)
' Réécriture de l'éxécutable
intFile = FreeFile
Open cdg.FileName For Output As #intFile
Print #intFile, "" & chaine
Close #intFile
Au moment de la fermeture du fichier, cette fonction rajoute
2 octets indésirables (0D 0A) à la fin de celui ci.
(fin de la citation ;)
Les 2 octets présent sont normal car un print écrit une ligne dans un fichier avec un CrLf a la fin (d'ou les 2octet) pour écrire un exécutable il faut louvrir en mod binaire et écrire avec Put
Genre:
' Réécriture de l'éxécutable
intFile = FreeFile
Open cdg.FileName For Binary Access Write As #intFile
Put #intFile, , chaine
Close #intFile
Voila ;)
A+
6 févr. 2004 à 18:30
un support de langue pour l'affichage des erreurs !
Sirocooo> installer une dll c'est bien ... s'en passer c'est mieu :-P
la boucle tu peut l'executer aussi comme ceci :
Open c.FileName For Binary As #1
s = String(LOF(1), 0)
Get #1, , s
Do
i = i + 1
i = InStr(i, s, "VB6FR.DLL")
If i Then Mid(s, i, 12) = "MSVBVM60.DLL"
Loop While i
Put #1, 1, s
Close #1
@+
6 févr. 2004 à 17:04
6 févr. 2004 à 14:37
6 févr. 2004 à 14:25
Je voulais simplement mettre en évidence que si vb6fr.dll n'est pas
utile, Miscrosoft ne l'aurrait pas crée.
bon courage
6 févr. 2004 à 14:18
En faite, si j'ai pondu cette appli, c'est pour rendre relativement portable des petits progs qui triplent de volume si on les envoies avec DLL. :o)
Et puis, c'est toujours sympa de se prendre la tête sur des bouts de codes. Ca peut toujours être réutilisé ailleurs quand c'est bien fichu...
6 févr. 2004 à 13:55
ca coute 10 secondes de temps pour l'installé
6 févr. 2004 à 13:43
Pardon...
6 févr. 2004 à 13:41
J'ai fait un essaie avec :
Print #intFile, "" & Right (chaine, len(chaine) - 2)
chaine est bien perd 2 octets, mais les 2 octets parasytes s'y
concatène à la suite...
6 févr. 2004 à 13:32
donc ca ne marche pas !
c bien d'avoir essayé quand meme
6 févr. 2004 à 13:31
6 févr. 2004 à 12:31
Si VB6fr.dll n'est pas présente et bien je l'installe...
Ca marche à tous les coups et ya pas de bugs.
Quel gaspillage de temps !!!!
6 févr. 2004 à 11:22
Je vais jetter un coup d'oeil sur ces propriétés.
... et tu as raison, quand quelquechose me gonfle, ma solution de fuite et un bon gros "On Error Goto" bien gras... C'est ma tendance programmeur du dimanche... :o)
Mais bon, je vais faire un effort...
A par ça, Je viens de découvrir un petit bug dans la source lors
de l'exécution de la fonction suivante :
' Réécriture de l'éxécutable
intFile = FreeFile
Open cdg.FileName For Output As #intFile
Print #intFile, "" & chaine
Close #intFile
Au moment de la fermeture du fichier, cette fonction rajoute
2 octets indésirables (0D 0A) à la fin de celui ci.
Ceci n'affecte en rien le fonctionnement de l'éxécutable, mais je
m'interroge sur la raison de l'apparition de ces deux octets...
Peut être pourrais tu m'éclairer legion91?
Je suppose que c'est "Print" et sa mauvaise habitude d'insérer des guillemets...
Tilois > Connaitrais tu une DLL plus générique que MSVBVM60.DLL?
MSVBVM50.DLL peut être?
khaleid > Je pense que Tilois peut nous éclairer tout deux...
5 févr. 2004 à 19:47
5 févr. 2004 à 19:45
peut on faire de meme avec d'autre dll vb ?
5 févr. 2004 à 17:05
With cdg
.CancelError = True
.Flags = &H80000 Or &H4 Or &H2
On Error GoTo ErrHandler
End With
-.cancelerror = true 'je ne sais moi meme c k sa veut dire un comentaire stp
- flag idem
- et On Error GoTo ErrHandler oula sa c du dans le cas ou sa plante ?, si ta pas selectionnez un bon fichier hehe fo mettre ma fonction dir ;-)
5 févr. 2004 à 15:48
Pour le reste, je suis d'accord que mon code peu être amélioré.
Il est sans prétention.
Je l'ai pondu hier soir parceque j'avais besoin d'un petit utilitaire de ce style.
Je n'ai pas trop pensé l'algo, mais c'est propre c'est sans bavure...
Merci en tout cas pour vos critiques constructives :o)
5 févr. 2004 à 14:27
5 févr. 2004 à 14:19
if dir(cdg.filename,vbNormal Or vbReadOnly Or vbHidden Or vbSystem Or vbArchive) <> vbnullstring then
dim Nr as string
dim Texte1 as string
Nr = FreeFile 'remplace #1 ou la c un chiffre aleatoire
Open sFile For Binary As #Nr 'on l'ouvre
Texte1 = Input(LOF(1), #Nr) 'tout le contenu du fichier dans la string sbin
Close #Nr 'on ferme le fichier
'on remplace
Texte1 = replace(Texte1,"vb6fr.dll","msvbvm60.dll")
nr = freefile
Open cdg.filename For Output As #nr
Print #nr, "" & Texte1
Close #nr
else
msgbox "Mais où elle l'exe ;-)"
end if