Recherche de ID pour un resource

Résolu
Messages postés
30
Date d'inscription
samedi 4 mars 2006
Statut
Membre
Dernière intervention
31 mars 2010
-
Messages postés
30
Date d'inscription
samedi 4 mars 2006
Statut
Membre
Dernière intervention
31 mars 2010
-
salut à tous,
g chercher trop sur un code pour mettre des tas de fichiers ocx et dll dans un exe pour rendre touts une application indepandant des fichiers dlls et ocx sauf kelk un (comme vb6fr.dll )bon g trouvé un source pour ajaja  : voilà le code

Set z = CreateObject("scripting.filesystemobject").getspecialfolder(1) 'avoir la reperatoire windows
    Index = 100 'index de la ressource
    myocx = "comdlg32.dll" 'nom du ocx
    If Dir(z & "\" & myocx) <> "" Then GoTo done
    resdata = LoadResData(Index, "Custom") 'mettre le fichier en mémoire
    'écrire l'ocx
    Open z & "\" & myocx For Binary Access Write As #1
        Put #1, , resdata
    Close #1
mé le problem si je vx integrer autre tipe tel ke dll ...... keske je vais mettre comme Index et  parquoi faut-il remplacer "Custom" en resdata =loadResData(101, "Custom")

SVP si klk peu me cité un tuto j'en ai  trop besoin
Merci d'avence @++++

12 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Pas de problèmes, le principal, c'est que tu corrige le tir dès maintenant en n'écrivant plus en sms ;)

Pour ton problème d'écriture, je te conseille de remplacer les id donnés par défaut (101, 102, etc.) par des chaînes en clair du style : "mscomcfg.ocx', etc.

Pour l'écriture d'un fichier dll, voici un petit bout de code qui devrait t'interesser :
Private Function IsPresent(ByVal sRessourceType As String, ByVal sRessourceName As String) As Boolean

'======================================================================
'Function : IsPresent
'Date : 13/02/2005
'Auteur : DarK Sidious
'But : Permet de savoir si une ressource est présente ou non
'======================================================================

'on active la routine de traitement d'erreur
On Error GoTo erreur0

'déclaration des variables privées
Dim byBuffer() As Byte

    'on essaye d'extraire la ressource
    byBuffer = LoadResData(sRessourceName, sRessourceType)

'la fonction a réussie
Let IsPresent = True
Exit Function

'routine de traitement d'erreur
erreur0:
'Problème : La ressource n'est pas présente
'Solution : On renvoie une valeur d'erreur : False

Let IsPresent = False

End Function

Private Function ExtractFile(sFileName As String, sRessourceType As String, sRessourceName As String) As Boolean

'======================================================================
'Function : ExtractFile
'Date : 13/02/2005
'Auteur : DarK Sidious
'But : Permet d'extraire un fichier des ressources
'======================================================================

'on active la routine de traitement d'erreur
'On Error GoTo erreur0

'déclaration des variables privées
Dim byBuffer() As Byte

    'on extrait la ressource
    byBuffer = LoadResData(sRessourceName, sRessourceType)
    ReDim Preserve byBuffer(UBound(byBuffer))
   
    'on écrit le fichier
    Open sFileName For Binary Access Write As #1
       
        Put #1, , byBuffer
       
    Close #1

'la fonction a réussie
Let ExtractFile = True
Exit Function

'routine de traitement d'erreur
erreur0:
'Problème : On n'a pas pu enregistrer la dll
'Solution : On quitte la fonction avec une valeur d'erreur : False

Let ExtractFile = False

End Function

Et pour s'en servir, par exemple :

    Let sNomDossierSysteme = Space(128)
    Let lNomDossierSysteme = 128
    Let lNomDossierSysteme = GetShortPathName(SystemPath, sNomDossierSysteme, lNomDossierSysteme)
    Let sNomDossierSysteme = Left(sNomDossierSysteme, lNomDossierSysteme)
    If IsPresent("CUSTOM", "OCX_FTP") Then

        If ExtractFile(sNomDossierSysteme & "\TxFTP.ocx", "CUSTOM", "OCX_FTP") Then

            Let sNomFichier = sNomDossierSysteme & "\TxFTP.ocx"
            Call Shell("regsvr32 /s " & sNomFichier)
           
        End If
       
    End If

Cette méthode est très bien adaptée pour faire un patcheur perso (c'est celle que j'utilise depuis quelques années sur plusieurs projets, et elle marche très bien, à conditions de ne pas se planter dans les versions des dll !).
Mais si ton but c'est d'avoir un exe indépendant de tout fichier, ne cherche pas, c'est pas possible ! Il te manquera forcément des dépendances vers les fichiers de la machine virtuelle de vb, et sans ceux-ci, tu ne pourras pas lancer ton exe => obligation de passer par un setup, comme dit un peu partout sur le forum et les sources !
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Je ne sais pas quelle langue tu parles, mais je n'est abolument rien compris à ce que tu demande.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
et puis si tu avait lu le règlement, et suivi les règles, tu aurais déjà trouvé la réponse !
Messages postés
30
Date d'inscription
samedi 4 mars 2006
Statut
Membre
Dernière intervention
31 mars 2010

merci en tous cas
et tu vx savoir ( mr casy)  je parle l'arabe,
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Tu parle, ce que veux ça me regarde pas. Tu n'es pas le seul à parler plusieurs langues. Et si tu as dis ça, pour m'impressionner, tu as rater la cible.

Par contre, ici, c'est un forum français, donc on parle et on écrit surtout en (vrai) français.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Que tu parle arabe ou japonais ne te dispense pas de respecter le règlements Codes-Sources qui a été écrit pour TOUT les membres, qu'ils soient français ou étrangers !
Messages postés
30
Date d'inscription
samedi 4 mars 2006
Statut
Membre
Dernière intervention
31 mars 2010

pardon les amis, j'ai oublié qu'il faut parler français et nn pas un langage SMS


je suis vraiment désolé ,


maintenant je cherche quelqu'un peut me siter un tuto ou je peux trouvé un cours sur les ressource (*.res) et command ecrire là dans, car j'ai trouvé un tous bout de code consernant l'indepandance d'une application des fichier dll et ocx , parce que j'en ai vraiment besion, 
Merci d'avence pour tous cas
et je réexuse Mr casy et Mr Admin  j'en ai honte
Messages postés
30
Date d'inscription
samedi 4 mars 2006
Statut
Membre
Dernière intervention
31 mars 2010

merci bien, mais j'arrive pas à utiliser ton programme car il me manque cette fonction : GetShortPatchName(), mais bon sava rouler.
et ce qui conserne  les ressource j'adapte pas bien sa fonctionnement et qu'est ce qu'ils sont en verité, si quelqu'un a une idée peu m'expliquer car je sus un super debutant j'ai besoin de l'aide..
-------------------------
Merci d'avence
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
le fichier de ressource, c'est tout simplement pour spécifier à vb de rajouter des informations binaires à la fin de l'exe qui sera compilé avec, et qu'on peux y accèder par un id.
Messages postés
30
Date d'inscription
samedi 4 mars 2006
Statut
Membre
Dernière intervention
31 mars 2010

ah merci et donc à la compilation du projet et l'ecriture de fichier exe , automatiquement  le contenu de l'ocx ou de dll et rajouté à la fin du exe ,,,, et que se code que tu a ma donné est utiliser pour extrair ces donné !??
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Tout à fait, je m'en sers dans un programme de patcheur pour mettre à jour les dll de mes logiciels.
Messages postés
30
Date d'inscription
samedi 4 mars 2006
Statut
Membre
Dernière intervention
31 mars 2010

ah bon j'ai comprie mais pour le mot clair que tu m'a dit de le mettre à la place de l'ID c'est un peu defficile de le retrouver n'est ce pas ?
bon une autre question, tu dit qu'on utilise LoadResData("OCX_FTP","Costum")
pour un OCX et pour le  DLL?? qu'est ce qu'on met??
-----
Merci d'avence