IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Modification d'un *.exe


Sujet :

Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2006
    Messages : 58
    Points : 46
    Points
    46
    Par défaut Modification d'un *.exe
    Bonjour,

    Dans une application Delphi, je dois remplir les deux champs suivants (TEdit) :

    + Chemin d'un fichier (Exemple : image.bmp)
    + Chemin d'un fichier executable (Projet1.exe)

    et lorsque je clique sur un bouton "OK" je dois avoir comme résultat, le fichier image.bmp inclus comme ressource dans le fichier Projet1.exe

    C'est compris ?

    Merci

  2. #2
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut
    Regarde dans l'aide de Delphi sous TRessourceStream ça pourra probablement te mettre sur une piste.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2006
    Messages : 58
    Points : 46
    Points
    46
    Par défaut ok
    Je vais voir, 10x

  4. #4
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Ce code fait partie de la bibliothèque SCL incluse dans Sepi, sous license GPL, autrefois les SJRDUnits :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    ///////////////////////////////////////
    /// Ajout-suppression de ressources ///
    ///////////////////////////////////////
    {$IFDEF MSWINDOWS}
     
    function BeginUpdateRes(const FileName : string) : integer;
    begin
      // Appel de Windows.BeginUpdateResource
      Result := BeginUpdateResource(PChar(FileName), False);
      // Si Result = 0, il y a eu une erreur API
      if Result = 0 then
        raise EUpdateResError.Create;
    end;
     
    procedure AddResource(ResHandle : integer; const ResName : string;
      Resource : TStream; const ResType : string = 'RT_RCDATA');
    var MemRes : TMemoryStream;
        MustFreeRes, OK : boolean;
    begin
      MustFreeRes := False;
      // On met dans MemRes un flux mémoire qui contient les données de la ressource
      if Resource is TMemoryStream then MemRes := Resource as TMemoryStream else
      begin
        MemRes := TMemoryStream.Create;
        MemRes.LoadFromStream(Resource);
        MustFreeRes := True;
      end;
      // Appel de Windows.UpdateResource
      OK := UpdateResource(ResHandle, PChar(ResType), PChar(ResName), 0,
                           MemRes.Memory, MemRes.Size);
      // On supprime le flux mémoire si on l'a créé
      if MustFreeRes then MemRes.Free;
      // Si UpdateResource a renvoyé False, il y a eu une erreur
      if not OK then raise EUpdateResError.Create;
    end;
     
    procedure DelResource(ResHandle : integer; const ResName : string);
    begin
      // Appel de Windows.UpdateResource
      if not UpdateResource(ResHandle, '', PChar(ResName), 0, nil, 0) then
      // Si UpdateResource a renvoyé False, il y a eu une erreur
        raise EUpdateResError.Create;
    end;
     
    procedure EndUpdateRes(ResHandle : integer; Cancel : boolean = False);
    begin
      // Appel de Windows.EndUpdateResource
      if not EndUpdateResource(ResHandle, Cancel) then
      // Si EndUpdateResource a renvoyé False, il y a eu une erreur
        raise EUpdateResError.Create;
    end;
     
    procedure AddResToFile(const FileName, ResName : string; Resource : TStream;
      const ResType : string = 'RT_RCDATA');
    var ResHandle : integer;
    begin
      ResHandle := BeginUpdateRes(FileName);
      try
        AddResource(ResHandle, ResName, Resource, ResType);
        EndUpdateRes(ResHandle);
      except
        try EndUpdateRes(ResHandle, True) except end;
        raise;
      end;
    end;
     
    procedure DelResInFile(const FileName, ResName : string);
    var ResHandle : integer;
    begin
      ResHandle := BeginUpdateRes(FileName);
      try
        DelResource(ResHandle, ResName);
        EndUpdateRes(ResHandle);
      except
        try EndUpdateRes(ResHandle, True) except end;
        raise;
      end;
    end;
     
    {$ENDIF}

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2006
    Messages : 58
    Points : 46
    Points
    46
    Par défaut en attente
    Bijour,

    en attente de le tester, je dois d'abord lire et comprendre le code.

    Merci,

Discussions similaires

  1. Modification des resources d un Exe
    Par Seth77 dans le forum Framework .NET
    Réponses: 0
    Dernier message: 19/12/2014, 14h34
  2. Lecture et modification d'un exe en hexadécimal VB2010
    Par nimbus629 dans le forum VB.NET
    Réponses: 5
    Dernier message: 20/06/2011, 20h49
  3. modification Code pour passer un exe en dll
    Par ehkhalid dans le forum C++
    Réponses: 4
    Dernier message: 23/01/2010, 10h38
  4. Modification des dépendences d'un exe
    Par pyrofrag dans le forum C++
    Réponses: 7
    Dernier message: 27/02/2008, 09h52
  5. Quel désassembleur/assembleur pour un exe Windows ?
    Par Anonymous dans le forum x86 32-bits / 64-bits
    Réponses: 6
    Dernier message: 17/04/2002, 10h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo