begin process at 2012 02 13 07:54:27
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > INCLURE LES OCX DANS VOS PROGRAMMES

INCLURE LES OCX DANS VOS PROGRAMMES


 Information sur la source

Note :
7,67 / 10 - par 6 personnes
7,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Niveau :Débutant Date de création :25/01/2005 Date de mise à jour :12/04/2005 14:19:45 Vu / téléchargé :12 176 / 2 225

Auteur : draluorg

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (22)
Ajouter un commentaire et/ou une note


 Description

Voila ceci est un module qui vous permet d'extraire et enregistrer vos ocx a partir de votre programme en les ayant prealablement mis dans un fichier de ressources personnalisee

pour l'exemple dans le zip j'ai utiliser comdlg32.ocx et reyXP_basics.ocx que j'ai renomme pour ne pas creer de confusion ils s'appelent ds l'exemple respectivement dialogg.ocx et basic.ocx

ceci vous permet donc de ne pas devoir faire un package pour distribuer vos applications!

Mais attention cela ne marche  pas pour les Dll c'est assez logique me direz vous

toute fois si vous soulez vraiment vous debarasser de ce probleme, voici une astuce pour ceux que ca interesse mais ca reste assez nawoik:

vous prenez par exemple winrar (celebre logiciel de compression/decompression de fichiers)
vous faites un clic droit sur votre exe et vos dll et vous faite "ajouter a l'archive"
puis la plusieurs options s'offre a vous choisissez "archive sfx"
dans option sfx choisissiez "mode silencieux"
ensuite choisissez l'endroit que vous desirez et verifiez bien de cocher l'option "reecrire tous les fichiers"
puis vous verrez une option "lancer le fichier apres l'extraction" indiquez le fichier a lancer (votre exe)
et voila votre exe contient maintenant vos dll et les extraira avant de "se lancer"

voila en esperant que ca serve a certains @+ bonne prog et n'hesitez pas pour les comments

Source

  • Option Explicit
  • Dim b1() As Byte
  • Dim b2() As Byte
  • Sub Main()
  • 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
  • Dim cc1, cc2
  • cc2 = App.Path & "\dialogg.ocx"
  • cc1 = App.Path & "\Basics.ocx"
  • b1 = LoadResData(101, "CUSTOM") ' contient basic.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"
  • Shell "regsvr32 /s dialogg.ocx"
  • 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
Option Explicit
Dim b1() As Byte
Dim b2() As Byte

Sub Main()
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
    Dim cc1, cc2
        cc2 = App.Path & "\dialogg.ocx"
        cc1 = App.Path & "\Basics.ocx"
        b1 = LoadResData(101, "CUSTOM") ' contient basic.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"
    Shell "regsvr32 /s dialogg.ocx"
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

Bon bein pour tester si ca marche compiler le prog puis fermez le projet et supprimez les deux ocx et lancez le prog @+

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

12 avril 2005 14:19:45 :
Rectification: Ce code n'est valable que pour les ocx et non pour les Dll

 Sources du même auteur

Source avec Zip Source avec une capture GESTION DES PRIVILEGES DES PROCESSUS
Source avec Zip Source avec une capture TEMPS PROCESSEURS TOTAL ET PAR UNITÉ (API NATIVE)
Source avec Zip Source avec une capture ENREGISTRER ET CHARGER LISTVIEW DANS FICHIER AVEC IMAGE ETC....
Source avec Zip Source avec une capture GESTION DES FICHIERS SWAP
Source avec Zip Source avec une capture CLASSE POUR RÉCUPERER L'UTILISATION CPU D'UN PROCESSUS

 Sources de la même categorie

Source avec Zip TEXTBOX EN NUMÉRIQUE par 320C
Source avec Zip DÉCIMAL TO HEXDECIMAL par loulou27200
SOUS-TITRES : INCRÉMENTATION DE TOUTES LES CHAÎNES DE CARACT... par ALMIRA
Source avec Zip Source avec une capture EVALUER UN NOMBRE D'OBJETS AVEC UNE BALANCE ET DEUX ÉCHANTIL... par lexsty
Source avec Zip Source avec une capture PETIT LOGICIEL DE DEVIS SANS BD par lololilizozo

Commentaires et avis

Commentaire de _Spartacus_ le 26/01/2005 12:32:11

Wow c'est exellent ca !
depuis le temps que je cherchais ca :)

par contre apres avoir ajoute 4 ocx mon exe fait maintenant plus de 3 Mo alors k'il ne fasait que 600 Ko
y a pas moyen de le diminuer ?
sinon bravo et merci c deja super col comme ca

Commentaire de DARKSIDIOUS le 26/01/2005 13:41:50 administrateur CS

_Spartacus_ : tu as toujours la possibilité de compresser tes dll/ocx avant de les inclure en binaire, puis les décompresser après, mais tu n'y gagneras pas grand chose, et tu y perdras en temps de chargement !

Perso, je trouve ca pas très pratique : ca gonfle les exe, et donc la taille en mémoire et le temps de chargement ! Autant laisser les dll déployées avec le prog, et ainsi, profiter de leur dynamique ! Car avec ta méthode, il n'est pas possible de faire d'early-bound sans erreurs (early-bound = liaison entre la dll et l'exe au démarrage du prog), ce qui ralentit pas mal les performances du programme !

Bref, je ne vois pas trop l'utilité d'utiliser cette méthode si on recherche les performances. Surtout que cela n'empêche pas de devoir installer les dll de VB pour faire tourner le prog !

DarK Sidious

Commentaire de draluorg le 26/01/2005 13:56:39

salut a tous,

eh pour le fait de les compresser avant c'est en effet la seul methode pour diminuaer la taille now ca ralentira encore un peu le lancement ms bon...

sinon je ne suis pas d'accord lorsque tu dis :

"  Car avec ta méthode, il n'est pas possible de faire d'early-bound sans erreurs (early-bound = liaison entre la dll et l'exe au démarrage du prog), ce qui ralentit pas mal les performances du programme !

Bref, je ne vois pas trop l'utilité d'utiliser cette méthode si on recherche les performances. Surtout que cela n'empêche pas de devoir installer les dll de VB pour faire tourner le prog !"

rien ne t'empeche de les declarer directement apres puis une fois enregistree l'echange dynamique est le meme now cette options reste pratique ds certain cas et de toute facon tous les programmes ne necessite pas une performance optimale ms plus d'etre trimbaler le plus facilement possible

puis pour les dll de vb appart vb6fr.dll pour les autres y a aucuns probleme

bonne prog @+

Commentaire de DARKSIDIOUS le 26/01/2005 14:17:32 administrateur CS

Quel est l'intérêt de ne lancer le prog qu'une fois les dll enregistrées ? Car si tu lance le prog alors que les dll ne sont pas déclarées, il y a plantage : erreur Automation !

Pour les dll de VB : vb6fr, oui, je suis d'accord, mais celle-là, tu fais comment pour l'inclure dans ton prog sans faire de setup ?

Je suis d'accord que cette source peut-être utile dans certains cas où la performance et l'occupation mémoire n'est pas une priorité, mais je mets en garde ce qui pense se débarasser de l'install de leur programme : il faut que vb6fr.dll soit installée avant de lancer un quelconque programme, et il faut que les dll qui sont nécessaires pour l'éxecution d'un programme soient enregistrées avant de lancer le programme !

Donc ta source peut être utile pour faire une sorte de "setup" sans passer par un véritable programme d'installation, qui mettra à jour les dll utilisé par un autre programme, mais par contre, elle ne permettra pas de faire un programme qui ne nécessite plus que vb6fr.dll pour fonctionner ! (à moins de tout faire par dll indépendantes des dll incluses dans le projet, mais là, on tourne en rond !).

DarK Sidious

Commentaire de draluorg le 26/01/2005 14:45:36

eh desole DarK Sidious mais je pense que tu n'as pas du bien lire la source ni d'aiileur l'explication que je donne au dessus car si la source permet bien de faire un programme qui ne necessite plus que VB6FR.DLL

essai l'exemple qui a ds le zip tu verra bien que ca marche

par contre je suis d'accord que ce n'est pas la sollution miracle (y en a po ) mais ca peut facilite les choses ds bien des cas.

Commentaire de DARKSIDIOUS le 26/01/2005 14:52:59 administrateur CS

Erf, désolé, j'avais pas vu que tu enregistrais les dll/ocx dans un main, et non après avoir afficher la feuille nécessitant les ocx.

Donc, en effet, ca permet de limiter les dépendances au seul VB6FR.dll

DarK Sidious

Commentaire de draluorg le 26/01/2005 15:27:49

yep je t'acorde qu' avec la forme du code ca pouvait preter a confision ;)

@+ bonne prog

Commentaire de DeadlyPredator le 26/01/2005 17:10:37

Désolé mais moi, je ne suis absolument pas convaincu par ton programme. Est-ce qu'il marche VRAIMENT??? Dès qu'on ouvre un exe VB, il y a aussitot une vérification qui s'effectue. Il manque 1 fichier et le prog démarre pas. Comment ce fait-il alors que tu puisse éxécuter ton code qui nécéssite l'OCX? LA soultion pour les OCX serait de créer un programme VB qui ne contient qu'un module, qui installe les OCX et qui démarre le vrai programme après. Pour les DLL, vb marche différament. Quand VB appelle une API, il le fait de façon explicite. Dans un exe c++, on lit implicitement car un fichier .lib contient l'entrée de la dll. Quand on regarde les importations d'un programme c++, on s'aperçoit que toutes les API utilisées y sont. Essayez sous vb. À PART ceux de la machine virtuelle (msvbvm60.dll), les votres n'y sont pas. C'est quoi le DECLARE selon vous? Donc même si il manque une dll AUTRE que celles de vb, ça ne devrait pas être un si gros problème. Pour la machine virtuelle de VB, je travaille sur une solution. Je crois avoir trouvé LE TRUC. Tout ce qu'il me faut, et que je ne peux pas avoir, c'est tout simplement certains fichier présent dans toutes vos version de VB6 version francaise car moi j'ai l'américaine et je suis au canada ... le fichier vba6exe.lib ... car comme je le disait, c'est lui qui pourrais lier CETTE MERDE de vb6fr.dll dans nos exe ... pour les ocxs, je vais regarder si y'aurais pas moyen de faire sortir les fichiers .obj des OCX et les faire accepter par vb au moyen d'un wrapper asm.

Commentaire de draluorg le 26/01/2005 17:32:30

bein essai le plutot que de faire un spich en supposant qu'il ne fonctoinne pas!

Commentaire de DeadlyPredator le 26/01/2005 18:36:10

Désolé. Je suis à l'école et y sont trop BS pour pouvoir ce permettre d'avoir VB sur ne serait-ce qu'une ordi. Si ça marche bien bravo, c'est une bonne affaire que je ne savais pas avec winrar. Sinon, t'as essayer, c'est bien quand même. Je reste quand même septique... je vais tester à soir. p.s je suis au canada ...

Commentaire de Nocturne le 26/01/2005 23:37:37

Pour ne pas avoir a utiliser la vb6fr.dll et bien installer Vb en version anglaise.
a+

Commentaire de DeadlyPredator le 27/01/2005 06:44:00

Wow. Je pensais pas que vb était comme ça. Il ne gérère l'erreur "composant manquant" seulement quand on affiche un form ou un autre contenant qui en a besoins. Normalement, il aurait dû y avoir une vérification au début pour s'assurer que tout les composants sont là mais vb ne fonctionne pas ainsi. Une suggestion que j'aurais serait de créer un form qui afficherait la progression de l'extraction au cas ou on a de gros ocx.

Commentaire de draluorg le 27/01/2005 07:34:31

wai un genre  "initialisation en cours..." si les ocx sont assez lourd, mais ici c'est juste l'exemle apres on peut imaginer des tas de trucs ms je v laisser comme ca pour que ce soit plus facile a comprendre...

@+ bonne prog

Commentaire de DEADisDEADisDEAD le 26/05/2005 15:21:28

slt, les ocx sont-il extrait dans c:\windaub\systeme32 ? si "oui" merci bien, si "non" il y aurai la possibilité ?

Commentaire de SuperPit37 le 30/05/2005 10:09:10

Ce code est très pratique! mai je n'arrive pas a le fair fonctionner quand je créé moi meme le fichier ressource il y quelque chose de particulier a rentré dedans?

Commentaire de gagou9 le 22/06/2005 15:00:40

Yo!
J'ai posté ta source ici avec quelques modifs (si tu voulai garder le copyright, bah etant donné qu'on est sur un site de codes...lool)

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

Voila !
En tout cas elle me sert bien ta source !
A+

Commentaire de zeunz le 22/04/2007 16:41:05

bonne idee! hje n'ai pas teste la source ms ca pourra etre utile ds le cas ou on aura pas trop de dll a enregistrer bien sur. par contre je n'ai pas teste ta source ms l'idee est interressante.

bonne continuation.

ps: faut arriver a trouver qque chose pr ce pb de vb6.dll....

Commentaire de zeunz le 22/04/2007 16:54:20

sans le vouloir j'ai mis 1/10 a cette source. ce n'etait pas mon but car j'aurais vloulu lui mettre un 8/10. si une admin peut le corriger merci.

Commentaire de DARKSIDIOUS le 22/04/2007 18:01:29 administrateur CS

c'est supprimé, tu n'as plus qu'à renoter.

Commentaire de mat_yaute le 22/10/2007 01:03:25

Bonjour,
Ce code m'intéresse beaucoup, mais il ne marche pas tel quel en vb.net.
Est-ce-que quelqu'un aurais une solution ?

Merci d'avance.
Mat

Commentaire de tuyo2poil le 26/11/2007 18:35:25

hé les champions du vb, y a une moulinette qui supprime dans les exe compilés les appels à vb6fr.dll (ça les remplace par des appels a je sais plus quelle DLL qu'est toujours là). ça marche impec je m'en sert tous les jours ! (je me demande d'ailleurs a quoi elle sert la vb6FR !!!).

quand au prog du pére Draluorg (ça devait pas être facile a l'école avec un nom pareil), et bin il est génial ! c'est en fait une install automatique d'ocx planqués dans l'executable ! donc , en clair, tu as réécris le package d'installation en simplifiant tout : c'est du clic & play ! pas besoin de se lezarder la cafetiére avec l'installeur de vb6 qui doit être l'oeuvre d'un troupeau de poivrichons notoires à mon avis....

en tout cas merci les mecs, car depuis le temps que je vous copie-colle, ça mériterais facile un petrolier de cote du rhone !

LPG

Commentaire de tuyo2poil le 26/11/2007 19:50:01 8/10

ah j'ai retrouvé (et j'ai fais gaffe a la note ce coup là !) !

ça redirige les appels vers msvbvm60.dll (qui doit être toute surprise de les voir arriver chez elle mais bon elle est tres acceuillante).

voilà le lien : http://www.vbfrance.com/codes/COMMENT-DEBARRASSER-VB6FR-DLL-LIMITANT-COMPATIBILITE-APPLICATIONS-VB_20160.aspx

ça marche nickel, sans dec !

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales