Inclure les dll et les ocx dans vos programmes (sauf vb6fr.dll)

5/5 (60 avis)

Vue 11 904 fois - Téléchargée 1 287 fois

Description

C'est une source de Draluorg que j'ai amélioré (http://www.vbfrance.com/code.aspx?id=29078)
car la sienne extrayait dans le repertoire de l'application, alors que la mienne extrait dans le repertoire systeme de windows.

Source / Exemple :


'code du module :
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Dim repsysteme As String 'variable qui sert a stoquer le sysdir

Option Explicit
Dim b1() As Byte
Dim b2() As Byte

Sub Main()  'Attention, il est nécessaire de mettre _
dans les options du projet qu'il faut demarrer par Sub Main()
    'fonction de recup du system directory
    Dim Ret As Long
    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
    'fin de la fonction
Extrait ' on extrait les ocx ou dll sur le disk et on les enregistre
DoEvents
Form1.Show ' on lance le form "de demarrage"
End Sub

Sub Extrait() 'fonction pour extraire les ocx sur le disk (dans le repertoire systeme)
    Dim cc1, cc2
        cc2 = repsysteme & "\dialogg.ocx"
        cc1 = repsysteme & "\Basics.ocx"
        b1 = LoadResData(101, "CUSTOM") ' contient basics.ocx (reyXP_Basic.ocx)

If FileExist("" & cc1) Then GoTo 2 ' si le fichier existe deja on pass

    Open cc1 For Binary As #1 ' on extrait l'ocx
        Put #1, , b1
    Close #1
    DoEvents
2
If FileExist("" & cc2) Then GoTo Fin ' si le fichier existe deja on pass

b2 = LoadResData(102, "CUSTOM") ' contient dialogg.ocx (ComDlg32.ocx)

    Open cc2 For Binary As #1 'on extrait l' ocx
        Put #1, , b2
        DoEvents
    Close #1

DoEvents
    Shell "regsvr32 /s basics.ocx"  'et la on enregistre les dll
    Shell "regsvr32 /s dialogg.ocx"   'le /s met regsvr32 en mode silentieux
Fin:
DoEvents
End Sub

'fonction pour verifier l'existance d'un fichier
Private Function FileExist(file As String) As Boolean
Dim L As Long
    On Error GoTo FExErr
        L = FileLen(file)
            FileExist = True
        Exit Function
FExErr: FileExist = False
Exit Function
End Function

Conclusion :


Merci a Draluorg qui a inventé cette source !!

Codes Sources

A voir également

Ajouter un commentaire Commentaires
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 21041 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!!!!!!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.