Un .exe dans un .exe ...

Contenu du snippet

 

Source / Exemple :


'
' Un .EXE dans un .EXE ...
' =================
'
' - Créez un fichier source de ressources (.RC)
'   (Voir l'aide en ligne de VB à propos des fichiers ressources...)
'
'     Exemple -> le fichier "ResExe.rc" contenant la ligne suivante:
'     ("MonFichier.exe" est le fichier qui sera intégré dans l'executable VB)
'
'     fichexe  EXE  MonFichier.exe
'
' - Créez le fichier de ressources (.RES) "ResExe.res" en compilant "ResExe.rc"
'   (Il faut utiliser un compilateur de ressources...)
'
' - Créez un projet VB et insérez "ResExe.res" dans ce projet
'   La ressource "MonFichier.exe" est maintenant accessible, exemple:
'   (le module contenant les APIs n'est pas présent ici)
'
' -------------------------------------------------------------
'
Option Explicit

Const FTAILLE = 351744   '//Taille du fichier "MonFichier.exe" (voir ResExe.rc) 
Const FDESTINATION = "\MonExe.exe"  '//Nom du fichier .EXE de destination

Private Sub Form_Load()
  Dim Data() As Byte
  Dim szPath As String * MAX_PATH
  Dim sa As SECURITY_ATTRIBUTES
  Dim hFic As Long, taille As Long, octets As Long
  
  With sa
    .nLength = Len(sa)
    .lpSecurityDescriptor = 0
    .bInheritHandle = True
  End With
  
  Data() = LoadResData("fichexe", "EXE")   '(voir ResExe.rc) 
  
  taille = MAX_PATH
  szPath = String(MAX_PATH, 0)
  Call GetSystemDirectory(szPath, taille)
  call lstrcat(szPath, FDESTINATION)
  
  hFic = CreateFile(szPath, _
                    GENERIC_WRITE, _
                    0&, _
                    sa, _
                    CREATE_ALWAYS, _
                    FILE_ATTRIBUTE_NORMAL, _
                    0&)
  
  Call WriteFile(hFic, Data(0), FTAILLE, octets, 0&)
  Call CloseHandle(hFic) 
End Sub  
' 
' -------------------------------------------------------------
'
' A l'execution, ce programme copiera la ressource "MonFichier.exe" 
' dans le répertoire systeme de windows sous le nom "MonExe.exe" 
'

A voir également

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.