INCLURE LES DLL ET LES OCX DANS VOS PROGRAMMES (SAUF VB6FR.DLL)

cs_gagou9 Messages postés 126 Date d'inscription vendredi 19 septembre 2003 Statut Membre Dernière intervention 20 novembre 2007 - 22 juin 2005 à 14:56
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 18 févr. 2012 à 11:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/32238-inclure-les-dll-et-les-ocx-dans-vos-programmes-sauf-vb6fr-dll

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
18 févr. 2012 à 11:34
Bonjour,

(Ouch, ça me rajeuni pas ce topic)

Je ne suis pas sur de comprendre la question. Il n'y a pas besoin de clé.
Globalement, il met les .ocx nécessaires en ressources du programme. Au lancement du programme, il extrait les .ocx, les copie dans system32 et fait un regsvr32 pour les registrer.

Mais il est généralement plus propre et plus simple de passer par un setup, généré via InnoSetup par exemple.
http://www.vbfrance.com/tutoriaux/INSTALLATION-AVEC-INNOSETUP_590.aspx

Il faut faire cependant bien attention à préciser à InnoSetup tous les fichiers nécessaires, avec enregistrement ou non (regserver) suivant le type de dll.

Pour tout programme, il faut msvbvm60.dll (Avec regserver) et vb6fr.dll (Sans regserver). Les autres dépendances classiques (comcat, ole32...) devraient être présentes.
BABUDROME Messages postés 151 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 19 avril 2016
18 févr. 2012 à 08:52
comment obtenir une clé pour utiliser ce programme ?
comment fonctionne-t-il ?
salut et remerciements anticipés. Babu
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 avril 2006 à 00:43
Un prog VB ne se distribue qu'avec un setup complet qui installera les runtimes VB sinon bien entendu qu'un prog VB ne tournera pas seul, c'est la différence entre le natif(C/C++ et ASM par exemple) et l'interprété (VB et .NET). Dans un cas l'exe contient toute sa logique et ne fait appel qu'aux fonctions du système pour l'affichage et trucs de ce genre et dans l'autre le code est à chaque tour traduit dans une virtual machine avant redirection vers les composants système.
pausezero Messages postés 15 Date d'inscription samedi 21 juin 2003 Statut Membre Dernière intervention 19 avril 2006
19 avril 2006 à 00:34
Me demande >>> A quoi bon programmer en Vb si notre application peut s'avérer inutilisable par l'utilisateur s'il n'a pas les dll et les ocx nécessaires a son fonctionnement... Autrement dit, si on veut que notre application soit applicable, il faudrais que l'utilisateur ait acheté VB. Donc, les applications Vb seraient-elle déstinées uniquement aux développeurs ?
OvO est un utilisateur s'étant appliqué a développer ce commentaire.
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
21 sept. 2005 à 12:55
Gagou9,

Je te remet mon lien qu'est un peu perdu dans tous les messages.

http://www.vbfrance.com/tutorial.aspx?ID=240

Sinon, c'est sympa les écoles d'ingé d'info: j'y ai pas encore vu un PC ! Y a que des terminaux connectés à des serveurs Unix et Windows.

Plus de restrictions que ça, tu meurs.

Et le langage le plus utilisé semble être le C... sous Unix!!!!!!
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
19 sept. 2005 à 07:35
Oui j'avais bien compris, c'était juste pour plaisanter.
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 sept. 2005 à 20:28
Le chiffre est différent
Nous avons un différend

Maître Capello
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
18 sept. 2005 à 19:03
Jack>>Merci pour la correction, j'aurais jamais dit que cela s'écrivait avec un D.

On dit donc:

Un différend : En français
Un <> : en VB...

Bonne prog
++
cs_gagou9 Messages postés 126 Date d'inscription vendredi 19 septembre 2003 Statut Membre Dernière intervention 20 novembre 2007
17 sept. 2005 à 18:02
hé bé dit donc ma chere source a l'aire de devenir un vrai forum
!!!!


loool
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
17 sept. 2005 à 15:31
... votre différend, avec un D
:-)
Jack, embrouilleur depuis 1959
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
15 sept. 2005 à 21:49
Ok j'ai pigé votre différent...

BruNews>>Oui c'est bien clair.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 sept. 2005 à 11:24
Mais non pas besoin, c'est écrit dans la description de l'algo de recherche de Loadlibrary, emplacement physique (loaded) est dans les 2 cas possibles donc à tout coup c'est bon.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 sept. 2005 à 11:22
BOUV > App.Path est obtenu par GetModuleFilename avec 0 en 1er param donc c'est toujours l'emplacement physique. CurDir vu son nom est bien sur la currentDirectory. J'espère bien que tout cela est évident pour tout le monde.
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
15 sept. 2005 à 11:19
Oups encore mauvais aordre des message...

Chuis encore là !

Bouv, notre problème était plutot de savoir s'il fallait absolument que le dossier du .exe soit le dossier courant au démarrage pour que les dlls de ce dossier soient correctement chargées.
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
15 sept. 2005 à 11:14
Donc on est d'accord que si les dlls sont dans le dossier contenant le .exe, elles seront chargés quel que soit le dossier courant.

Au fait, comment ça se fait que des fois t'est marqué admin et des fois pas ?

Je signale que je rentre en école d'ingé d'info le 19.
C'est loin de chez moi et je ne prend pas de PC... Je ne sais pas qu'en c'est que je vais revenir sur ce site. Alors à plus !
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
15 sept. 2005 à 11:10
BruNews et RT15>> Je crois qu'il y a une erreur de compréhension entre vous. Je crois que ce qu'essai d'expliquer RT15 c'est que :

App.Path prend toujours la valeur du dossier qui contient l'exe ;

CurDir prend la valeur du dossier qui contient l'exe si on lance l'exe directement ou la valeur du dossier qui contient le raccourci si on lance l'exe depuis un raccourci.


Je pense que c'est également valable pour les DLL.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 sept. 2005 à 11:06
Bien entendu, c'est la différence entre currentDirectory et emplacement physique.
Il est clair que 'loaded' n'a aucun rapport avec la currentDirectory.
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
15 sept. 2005 à 10:57
Tu sais que l'on peut démarrer une application dans un dossier.

Autrement dit, au démarrage de l'application, le dossier courant peut être n'importe quoi!

Pour cela, il faut par exemple executer l'application depuis le DOS. Dans ce cas, le dossier courant au lancement de l'application est le dossier courant du DOS. (echo %CD%, si le prompt est modifié).

On peut aussi modifier le dossier de démarrage dans un .lnk.

Dans les propriété, il y a le chemin de l'exe, et "démarrer dans : ". Démarrer dans spécifie le dossier courant de démarrage de l'application.


Mais The directory from which the application loaded, je pense que c'est le dossier ou se trouve le .exe. C'est du moins ce que confirme mes tests.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 sept. 2005 à 10:49
Là c'est 'mal' jouer avec les mots:
"dossier où l'application a démarré" et "dossier ou le .exe a été chargé"
Je n'arrive pas à voir la différence.
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
15 sept. 2005 à 10:41
Désolé BruNews,

Il semblerait que j'ai raison.

J'ai fait des essais depuis VB6, avec ce code:

Private Declare Function InitCpuSpeed Lib "EX_Time.dll" Alias "EXtmr_InitCpuSpeed" (ByVal lpEX As String) As Long
Private Declare Function GetCpuSpeed Lib "EX_Time.dll" Alias "EXtmr_GetCpuSpeed" (nBuffer As Long, ByVal lpEX As String) As Long

Private Sub Form_Load()
Dim intBuffer As Long

Call InitCpuSpeed("allo")
Call GetCpuSpeed(intBuffer, "allo")
MsgBox CurDir
MsgBox intBuffer
End Sub

J'ai ensuite appelé l'exe depuis un batch et aussi depuis un raccourcis où j'ai modifier "Démarrer dans :"

Je me suis bien sûr assurer qu'aucune EX_Time.dll ne se trouvait dans un autre emplacement que le dossier de l'exe, et que celui-ci n'était pas mentionné dans les variables d'environement.

The directory from which the application loaded.

C'est pas le dossier où l'application a démarrée.

C'est le dossier ou le .exe a été chargé !

Conclusion, si on place les dlls dans le même dossier que l'exe, on se fiche complètement du dossier courant.

Si tu ne me crois pas, fait un test !!!

J'ai essayer de débugger LoadLibrary, mais je n'ai pas le niveau...

Mais pleures pas: si tu veux me trouver des anneries que j'ai écrites tu devrais en trouver plein dans mon tuto !

Gagou9,

Le source de Philipe Heiz quand même assez facilement utilisable.

Voici le lien vers mon tuto:

http://www.vbfrance.com/tutorial.aspx?ID=240
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
12 sept. 2005 à 16:55
dur dur les messages qui ne sont pas dans l'ordre:

The directory from which the application loaded.
C'est pas le dossier de l'exe ?????? EXACT.

Si les DLLs (API bien entendu) ne sont pas dans un dossier de l'algo de recherche de LoadLibrary, il est clair qu'il sera impossible de les charger.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
12 sept. 2005 à 16:45
exact
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
12 sept. 2005 à 16:44
Ou alors on s'est mal compris...

Si un exe et ses dlls se trouvent dans c:\PROG, tu dis que si l'exe est démarré dans C:\, le programme ne parviendra pas a charger ses dlls, c'est bien ça ?
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
12 sept. 2005 à 16:35
The directory from which the application loaded.

C'est pas le dossier de l'exe ??????
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
12 sept. 2005 à 16:32
rt15 > Bonjour le DELPHIste, je viens seulement de retrouver nos derniers échanges sur une de tes précédentes sources.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
12 sept. 2005 à 16:24
If no file name extension is specified in the lpFileName parameter, the default library extension .dll is appended. However, the file name string can include a trailing point character (.) to indicate that the module name has no extension. When no path is specified, the function searches for loaded modules whose base name matches the base name of the module to be loaded. If the name matches, the load succeeds. Otherwise, the function searches for the file. The search order used depends on the setting of the HKLM\System\CurrentControlSet\Control\Session Manager\SafeDllSearchMode value.

Windows 2000/NT, Windows Me/98/95: The SafeDllSearchMode value does not exist.
If SafeDllSearchMode is 1 (the default), the search order is as follows:

The directory from which the application loaded.
The system directory. Use the GetSystemDirectory function to get the path of this directory.
The 16-bit system directory. There is no function that obtains the path of this directory, but it is searched.
Windows Me/98/95: This directory does not exist.
The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.
The current directory.
The directories that are listed in the PATH environment variable.

If SafeDllSearchMode is 0, the search order is as follows:

The directory from which the application loaded.
The current directory.
The system directory. Use the GetSystemDirectory function to get the path of this directory.
The 16-bit system directory. There is no function that obtains the path of this directory, but it is searched.
Windows Me/98/95: This directory does not exist.
The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.
The directories that are listed in the PATH environment variable.

Windows XP: The default value of HKLM\System\CurrentControlSet\Control\Session Manager\SafeDllSearchMode is 0 (the current directory is searched before the system and Windows directories).
The first directory searched is the one directory containing the image file used to create the calling process (for more information, see the CreateProcess function). Doing this allows private dynamic-link library (DLL) files associated with a process to be found without adding the process's installed directory to the PATH environment variable.

The search path can be altered using the SetDllDirectory function. This solution is recommended instead of using SetCurrentDirectory or hard-coding the full path to the DLL.
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
12 sept. 2005 à 16:19
J'ai pas la MSDN...

Evidement si tu as lu l'algo, je dois me tromper.

Cependant, je vais essayer quand même, car il me semble avoir déjà essayé...

(Je suis dans un cybercafé...)
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
12 sept. 2005 à 15:20
C'est tout à fait certain, regarde l'algo de recherche d'un module dans MSDN sur LoadLibrary.
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
12 sept. 2005 à 15:01
Gagou9,

Okay, je vais essayer de faire un tuto pour la rédaction manuelle.

Je posterai ici son URL.

Mais ça rédaction vat me rapppeler de mauvais souvenirs...

BruNews,

Resalut si tu te souviens de moi.

Je te taquine encore.

Tu as écris:

Pas besoin qu'une dll soit dans sysDir mais dans dossier du exe vb est suffisant, il suffit d'assurer la currentDirectory sur dossier exe par un appel SetCurrentDirectory dès le lancement du prog.

Mouais...

Je suis pas sûr que le dossier de l'exe est besoin d'être courant pour que windows trouve les dlls. Je vérifierai !
cs_gagou9 Messages postés 126 Date d'inscription vendredi 19 septembre 2003 Statut Membre Dernière intervention 20 novembre 2007
9 sept. 2005 à 19:04
Salut !!
ça m'interresse le tuto pour rediger manuellement !!!

ça fait longtemps que j'ai pas travaillé cette source, mais si je peux l'amelioré, autant la faire !!!!

emrci


Gagou9
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
5 sept. 2005 à 15:55
Salut Gagou9

J'ai fait des essais concluant avec une dll à moi sur un PC où la base de regisre était bloquée.
Il faut un .Manifest pour l'exe et un de plus pour chaque fichier partagé.
Le prog du lien de mon précédent message évalue mal les dépendances des exe, par contre il rédige bien les manifest.
On peut rajouter manuellement les dll et ocx qu'il a oublié.
Par contre, il faut que celles ci soient installés au moment de la génération des manifest.
Au pire, on peut rédiger les fichiers manuellement.
Mais pour cela, il faut récupérer les CLSID manuellement dans la base de registre, ce qui peut être fastidieu.

Si tu veux, je peut te mailler un exemple. Ou alors je peut faire un tuto sur une rédaction manuelle...
cs_gagou9 Messages postés 126 Date d'inscription vendredi 19 septembre 2003 Statut Membre Dernière intervention 20 novembre 2007
1 sept. 2005 à 19:45
Salu!
j'avasi deja essayé avec des fichiers .Manifest, mais ça n'avait pas fonctioné (c'et moi qui devait etre nul !!)

si tu sais comment faire precisement, previent moi !!

cette source n'est utile que pour les petits programmes, et de toute facon msvbvm60.dll est preseznte sur la plupart des OS !

voila merci

Gagou9
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
1 sept. 2005 à 19:35
Pour XP, on peut mettre des fichiers .Manifest qui remplace l'installation dans la base de registre:

http://www.vbfrance.com/code.aspx?ID=28387

Pas besoin d'avoir de droit: pas besoin de modifier le registre.

Pas non plus de problèmes de version !

Si ça ne marchait pas que sur XP, ce serait fantastique...

(Des essais sur 2000 ont été concluant)

Par contre difficulté d'installer msvbvm60.dll avec ça...
cs_gagou9 Messages postés 126 Date d'inscription vendredi 19 septembre 2003 Statut Membre Dernière intervention 20 novembre 2007
5 août 2005 à 11:53
hé, est-ce que j'ai dit UNE fois que c'etait revolutionnaire ??
au contraire, cette source n'est que l'amelioration d'une autre !
rien de plus! et elle necessite encore d'autres ameliorations !
voila voila !!

A la revoyure !

Gagou9
SuperPit37 Messages postés 61 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 13 novembre 2005
5 août 2005 à 02:25
ah c sur c'est révolutionnaire ce que tu a fait vraiment tu ai trés fort qu'elle inovation enfin bref...
cs_gagou9 Messages postés 126 Date d'inscription vendredi 19 septembre 2003 Statut Membre Dernière intervention 20 novembre 2007
3 juil. 2005 à 10:59
en mieux ?
celui quue tu mez montre la c'est celui dont je me suis tiré !
lui il enregistre les ocx dans le repertoire actuel, et ça je trouve ça nul !
voila!
allez a+

Gagou9
SuperPit37 Messages postés 61 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 13 novembre 2005
3 juil. 2005 à 05:51
Déjas vu et en mieux !
http://www.vbfrance.com/code.aspx?id=29078
L'inovation ca a du bon, non?
cs_gagou9 Messages postés 126 Date d'inscription vendredi 19 septembre 2003 Statut Membre Dernière intervention 20 novembre 2007
29 juin 2005 à 22:06
yo !
ben voila j'ai ajouté un commentaire qui dit bien qu'il faut demarrer par sub main() donc vu que la form ne se charge pas avant d'avoir les ocx, ben pas de bug !!

euh sinon pour la version je fai comment ? car je veux bien moi mais je debute et pi pas connai pa tout !!

merci

gagou9
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
29 juin 2005 à 20:19
Salut a tous,

Pour commencer, ce code sert a transporter un ou deux ptits ocx pour faciliter le transport de petits executable n'etant pas destine a etre installe! Et non a contenir toutes les librairie d'une grosse appli!
Il peut aussi si vous utilisez VB6 (US qui ne necessite pas VB6FR.DLL) servir a faire un installateur pour de plus grosse appli a condition que msvbm60.dll soit installe sur la machine ce qui est le cas a partir de Win2000 ou XP.

Mais je ne vois pas ce que le probleme de droits vient faire ici!
si l'utilisateur n'a pas les droits pour un RegServ32, il ne les a pas non plus via un installateur!!!
Sinon pour le probleme de systemDir ou de app.path bah c simple si c'est un ocx que vous avez code vous meme app.path convient tres bien sinon si c'est un composant succeptible d'etre installe sur d'autres machines genre winsock.ocx, il est preferable d'utiliser le rep systeme (mais en faisant une verification de la verion!!)
Donc en resume ce code est tres utile pour qui saura comprendre son utilite ;)
bonne prog a tous @+
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
24 juin 2005 à 21:11
Puisqu'il faut du concret... voila de quoi oublier definitivement vb6fr.dll http://www.vbfrance.fr/code.aspx?id=20160

Les sources de ce type pululle sur vbfrance...

@+
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 juin 2005 à 09:52
Bien entendu qu'un ActiveX doir être enregistré.
Si on parle de DLL sans préciser, c'est toujours de DLL API.
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
24 juin 2005 à 09:46
Whaouu... quel niveau !! Pour mon expérience perso, il m'est arrivé de faire tourner une appli grace aux dlls présentes dans le répertoire de l'exécutable, mais c'était par erreur. En revanche, cela ne fonctionne pas toujours, certaines dll doivent être enregistrées pour fonctionner.

>certains utilisateurs n'ont pas le droit d'installer des logiciels.
Oui. J'en ai trop souvent fait l'expérience


>Me gourré-je ?
On ne pas me gour'je ? ;o)
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
24 juin 2005 à 09:36
Ok, c'est plus clair maintenant, mais dépendre du répertoire courant, c'est pas le top quand même !
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 juin 2005 à 09:03
Pas besoin qu'une dll soit dans sysDir mais dans dossier du exe vb est suffisant, il suffit d'assurer la currentDirectory sur dossier exe par un appel SetCurrentDirectory dès le lancement du prog.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
24 juin 2005 à 08:54
> vb6fr.dll ne sert strictement a rien
Si ton appli affiche un message qui est traduit dans cette dll, je crois bien que ton appli sera bloquée si cette dll est absente
Par ailleurs, pour un programme déjà compilé, tu sera bien obligé de copier les dll api dans le répertoire système de Windows, et de toute façon, il me semble que le app.path n'est pas utilisable pour les declare, de sorte qu'il ne reste qu'une seule solution (hormis l'api LoadLibrary ?) pour éviter les chemins en dur : le répertoire système.
Enfin, tout programme d'installation requiert aussi un minimum de droit : certains utilisateurs n'ont pas le droit d'installer des logiciels.
Me gourré-je ?
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
23 juin 2005 à 20:03
Faux> les dll peuvent etre n'importe ou du moment que le declare specifie le chemin ou bien que la dll est dans le dossier de l'appli (cf: loadlibrary utilisé par la vm vb).

Faux> vb6fr.dll ne sert strictement a rien puisqu'il n'y absolument aucun code dedans mais uniquement la traduction française des messages d'erreur, msvbvm60.dll seul fera l'affaire.

Faux> il est inutile dans le cas present de copier les ocx & dll dans le repertoire systeme car sur un poste convenablement configuré pour un usage proffesionnel les repertoire systeme sont protegé l'utilisation de app.path est plus logique

Pour conclure, celui qui veux inclure les dll et ocx dans son appli aura plus d'avantage a utiliser un VRAI logiciel d'installation plutot que d'ajouter tout ça dans tout ces exe ce qui ne ferait que grossir miserablement l'application. Les ocx et dll ne sont il pas la justement pour alleger et partager le code ?
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
23 juin 2005 à 18:59
On peut aussi dire et écrire "me gourre-je ?"
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
23 juin 2005 à 15:51
Les dll ActiveX doivent toujours être enregistrées, les dll de type API doivent toujours etre dans le repertoire système de Windows, je suis sur d'avoir déjà tout essayé pour VB6. Pour VB7, j'ai parlé trop vite : en fait le fichier .exe.config ne sert ici que pour déplacer les dll dans un sous-dossier de l'application.
Enfin pour la derniere remarque, il sera effectivement necessaire de réenregistrer l'ocx si le répertoire à changé, sinon ce n'est pas plus genant que cela (si on suppose que l'ocx n'est pas partagé par plusieurs applications, mais dans ce cas, il ne faut enregistrer l'ocx que s'il ne l'est pas déjà sur le poste)
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
23 juin 2005 à 14:37
Cela dit il n'est pas bon d'enregistrer des DLL et OCX à tout va dans n'importe quel dossier !
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
23 juin 2005 à 14:36
Désolé de contredire, mais il me semble que Moustachu a raison.

J'ai dejà vu des CD-ROM où les mecs mettent VB6FR.dll à la racine du CD-ROM (avec l'exe) pour que leur prog d'installation fait maison puisse se lancer. Et cela fonctionne...

De plus, quand par exemple on lance un projet alors qu'il manque un OCX ou une DLL sur le poste, VB nous indique qu'il manque le composant avec en info le repertoire du projet. Donc "A MON AVIS" quand un prog VB6 ne trouve pas le composant qu'il cherche dans la base de registre, il scan le dossier de l'exe.
Sinon c'est mystère et boulle de gomme.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
23 juin 2005 à 14:05
En VB6 c'est faux, cela ne marchera jamais ; en VB .Net, cela devrait marcher en théorie, mais en pratique j'ai été obliger de faire un .exe.config
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
23 juin 2005 à 13:38
>(au fait on dit : "me trompé-je" et on prononce "me trompè-je")
Oui, oui, je sais... c'est le problème des "private jokes" un peu trop "private" ;o)

Au sujet des OCX et DLL, dans un confus souvenir, il me semble que si le fichier dll et/ou ocx est dans le même répertoire que l'exécutable, il n'est pas nécessaire de l'enregistrer. Quelqu'un peut il le confirmer ?

++
Moustachu
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
23 juin 2005 à 12:49
Oui ! cela requiert les droits Administrateur sur le poste de travail, sinon regsvr32 renvoi l'erreur n°0x8002801c (au fait on dit : "me trompé-je" et on prononce "me trompè-je")
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
23 juin 2005 à 12:00
>enregistrer les ocx
Encore faut-il avoir les droits... me tromp'je ?

++
Moustachu
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
23 juin 2005 à 08:40
> pour demarrer l'appli il faut avoir les ocx !

Faux ! on peut très bien démarrer sur le main(), enregistrer les ocx le cas échéant, puis lancer une form contenant des ocx :
www.vbfrance.com/code.aspx?ID=17783
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
23 juin 2005 à 07:20
Rien de tel qu'une installation en bonne et due forme...
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
22 juin 2005 à 19:48
Allez patience EB, reste plus que le dossier Windows et le sujet sera épuisé.
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
22 juin 2005 à 18:55
Encore une fois le serpent qui se mord la queue !
Pour avoir les ocx faut demarrer l'appli et pour demarrer l'appli il faut avoir les ocx !

Aller zou dans le fourbi vbfrance...
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
22 juin 2005 à 18:28
Salut
En effet, Ret = GetSystemDirectory(repsysteme, 255) renvoie dan Ret la longueur de la chaine récupérée dans repsysteme, qui elle contient 255 caractères, c'est la raison pour laquelle ensuite, tu ne prends que les Ret caractères de cette chaine avec la fonction Left.
Pour ce qui est de la source, oui, ça peut être pratique pour les DLL de référence, mais pas pour les OCX :
En effet, si, dans ton appli, tu te sers ce l'OCX qui est stockée dans on fichier de ressources, l'EXE refusera de se lancer puisqu'il a besoin de cet OCX qui n'existe pas encore.
Ton application fonctionnerait, mais il faut lui laisser le role d'installateur d'OCX pour une autre application.
De plus, après avoir extrait ton OCX, il faut impérativement l'enregistrer dans la base de registre (avec RegSvr32 par exemple) : il existe des sources qui savent le faire.
De toute façon, cette application d'installation étant quand même basée sur du VB, il faudra quand même faire une installation propre (avec l'empaquettage) une première fois pour mettre en place les fichiers références de VB.
cs_gagou9 Messages postés 126 Date d'inscription vendredi 19 septembre 2003 Statut Membre Dernière intervention 20 novembre 2007
22 juin 2005 à 14:56
oups ya des fautes d'orthographe !!
Euh j'ai un peu commenté la source, mais vu que ça fait seulement 4 ou 5 mois que je fais du VB j'ai bien peur qu'il y ai des commentaires faux, dites le moi svp !!
(je pense en particulier a :
repsysteme = Space(255) ' creer un espace reservé
Ret = GetSystemDirectory(repsysteme, 255) 'stocke dans ret le repertoire, avec des espaces en bout de string
repsysteme = Left$(repsysteme, Ret) 'enleve les espaces qui servent a rien et stoque le rep dans repsysteme
)

A+

Gagou9
Rejoignez-nous