begin process at 2010 02 10 08:51:14
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > LECTURE DU NUMÉRO DE VERSION DE L'APPLICATION

LECTURE DU NUMÉRO DE VERSION DE L'APPLICATION


 Information sur la source

Note :
8,75 / 10 - par 4 personnes
8,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Niveau :Débutant Date de création :12/04/2002 Date de mise à jour :12/04/2002 00:22:40 Vu / téléchargé :2 651 / 139

Auteur : Nono40

Ecrire un message privé
Site perso
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Voici une petite fonction qui lit le numéro de version de votre application.
Pour que votre application contienne un numéro de version il faut aller dans Menu Projet\Options... puis dans l'onglet 'Informations de Version' cocher la case 'Inclure les informations de version dans le projet'

Ce numéro apparaît aussi dans l'explorateur windows par un click droit sur votre application puis Propriétés\Onglet version.

--- Nono du Moulin ---

Source

  • Function LectureVersion:String;
  • Var
  • S : String;
  • Taille : DWord;
  • Buffer : PChar;
  • VersionPC : PChar;
  • VersionL : DWord;
  • Begin
  • Result:='';
  • {--- On demande la taille des informations sur l'application ---}
  • S := Application.ExeName;
  • Taille := GetFileVersionInfoSize(PChar(S), Taille);
  • If Taille>0
  • Then Try
  • {--- Réservation en mémoire d'une zone de la taille voulue ---}
  • Buffer := AllocMem(Taille);
  • {--- Copie dans le buffer des informations ---}
  • GetFileVersionInfo(PChar(S), 0, Taille, Buffer);
  • {--- Recherche de l'information de version ---}
  • If VerQueryValue(Buffer, PChar('\StringFileInfo\040C04E4\FileVersion'), Pointer(VersionPC), VersionL)
  • Then Result:=VersionPC;
  • Finally
  • FreeMem(Buffer, Taille);
  • End;
  • End;
Function LectureVersion:String;
Var
  S         : String;
  Taille    : DWord;
  Buffer    : PChar;
  VersionPC : PChar;
  VersionL  : DWord;

Begin
  Result:='';
  {--- On demande la taille des informations sur l'application ---}
  S := Application.ExeName;
  Taille := GetFileVersionInfoSize(PChar(S), Taille);
  If Taille>0
  Then Try
  {--- Réservation en mémoire d'une zone de la taille voulue ---}
    Buffer := AllocMem(Taille);
  {--- Copie dans le buffer des informations ---}
    GetFileVersionInfo(PChar(S), 0, Taille, Buffer);
  {--- Recherche de l'information de version ---}
    If VerQueryValue(Buffer, PChar('\StringFileInfo\040C04E4\FileVersion'), Pointer(VersionPC), VersionL)
      Then Result:=VersionPC;
  Finally
    FreeMem(Buffer, Taille);
  End;
End;
 

 Conclusion

P.S. J'ai écrit cette procédure car celle dans l'aide de Delphi ne fonctionne pas sans modifications, du moins par sur mon poste. Quelqu'un a-t-il eu le même problème ?

 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


 Sources du même auteur

Source avec une capture TAUX D'OCCUPATION DU PROCESSEUR
Source avec Zip SYNCHRONISER DEUX LISTBOX
Source avec Zip Source avec une capture SUPPRIMER LE SCINTILLEMENT AVEC DOUBLEBUFFERED
SETFOCUS SUR UN BOUTON D'UN RADIOGROUP
Source avec Zip DESSINER DANS LE SYSTRAY AVEC CREATEICON

 Sources de la même categorie

Source avec Zip Source avec une capture LOGICIEL DE DIAGNOSTIC AUTOMOBILE KWP2000 par Oniria
Source avec Zip Source avec une capture RÉGLE TRANSPARENTE POUR MESURER UN OBJET ECRAN par dubois77
Source avec Zip Source avec une capture LE BOOK DU PAUVRE par dubois77
Source avec Zip Source avec une capture CAHIER 90 PAGES par dubois77
Source avec Zip Source avec une capture TABLEAU DE BOUTONS DYNAMIQUES (AGENDA) par dubois77

Commentaires et avis

Commentaire de Delphiprog le 09/05/2002 23:42:16 administrateur CS

Dans le cas d'une DLL, l'activation du numéro de version dans Options/Projet est accessible  mais ne produit aucun effet (du moins sous Delphi 4).
Pour pouvoir lire le n° de version à l'éxécution, insérer {$R *.res} dans le source du projet, avant le begin.

Commentaire de SystemNet le 13/07/2004 00:49:05

Bonjour, je suis novice, j'ai fais une petite application en delphi qu icahrge un contenue de page web. j'aimerais faire vérifier la version du programme par rapport à la dernière version en cour. Quelqu'un pourrais jsut em'aider à me dire dans delhpi, dans mon projet, ce que je dois faire pour que en gros :
WebBrowser1.Navigate('http://xcom.system-net.biz/index.php?version=');
Apres version= il y ai de marqué le n° de version. Merci bcp

Commentaire de jmp77 le 02/03/2005 09:57:23

Hello,

Super source nono40.

Par contre je n'arrive pas à obtenir le numéro de version dans les dll. A chaque fois que j'essaie je recupere toujours la version de l'exe qui lance la dll.
Ceci est normal car S := Application.ExeName; renvoi le chemin de l'exe j'ai essayer en mettant le chemin de ma dll en dur S := C:\data\madll.dll et là hop ca fonctionne tres bien.
Est ce que vous auriez un remede svp?

Bonne continuation,
JMP77.

Commentaire de jmp77 le 02/03/2005 09:58:45

PS : cette source mérite un bon 10/10 pour moi.

Commentaire de jmp77 le 02/03/2005 10:57:14

Re,

C'est bon j'ai trouvé grave à ce site :
http://www.martinstoeckli.ch/delphi/delphi.html#AppName

Voici avec cette modification le numéro de version d'un exe ou d'une dll fonctionne :

function LectureVersion:string;
//D'après le code de nono40 http://www.delphifr.com/code.aspx?ID=11847

    function Sto_GetModuleName: String;
   //D'apres http://www.martinstoeckli.ch/delphi/delphi.html#AppName
   var
   szFileName: array[0..MAX_PATH] of Char;

   begin
   GetModuleFileName(hInstance, szFileName, MAX_PATH);
   Result := szFileName;
   end
var
    S        : string;
    Taille  : DWord;
    Buffer  : PChar;
    VersionPC : PChar;
    VersionL    : DWord;

begin
    Result:='';
    {--- on demande la taille des informations sur l'application ---}
    S := Sto_GetModuleName;//Application.ExeName;
    Taille := GetFileVersionInfoSize(PChar(S), Taille);
    if Taille>0
    then try
    {--- Réservation en mémoire d'une zone de la taille voulue ---}
    Buffer := AllocMem(Taille);
    {--- Copie dans le buffer des informations ---}
    GetFileVersionInfo(PChar(S), 0, Taille, Buffer);
    {--- Recherche de l'information de version ---}
    if VerQueryValue(Buffer, PChar('\StringFileInfo\040C04E4\FileVersion'), Pointer(VersionPC), VersionL)
        then Result:=VersionPC;
    finally
    FreeMem(Buffer, Taille);
    end;
end;

Commentaire de bib34690 le 19/09/2005 12:31:29

Bonjour,

Il semble que ce code ne marche pas pour certains EXE, comme Winword.exe ou Excel.exe, alors que ces informations sont visibles si on fait un clic droit sur le fichier.
quelqu'un aurait-il une soluce ?
Merci.

Commentaire de jmp77 le 19/09/2005 13:50:11

Hello,

Ca ne fonctionne qu'avec l'exe que tu as compilé.

++,
JMP77.

Commentaire de bib34690 le 19/09/2005 16:47:44

ça marche avec n'importe quel prog. si on remplace S par File Info passé en param.

... j'ai entretemps trouvé la solution que je publierai dès que j'aurais fini de la tester...c'est un problème de langue...
le code ci-dessus ne marche que si le programme est de type "Français"
Winword et Excel sont compilés avec pour langue "langue neutre" ???...sacré bilou !
Il faut donc "trasncrire" 'FileVersion' en fonction de la langue du fichier.
@ + pour la soluce.

Commentaire de bib34690 le 19/09/2005 16:51:36

Voila mon nouveau code :
Function LectureVersion(FileName:String):String;

Var
  Handle   : DWord;
  Info     : Pointer;
  InfoData : Pointer;
  InfoSize : LongInt;
  DataLen  : UInt;
  LangPtr  : Pointer;
  InfoType : string;

Begin
  Result:='';
  //--- On demande la taille necessaire pour stocker les infos
  InfoSize:= GetFileVersionInfoSize(PChar(FileName), Handle);
  If (InfoSize>0) Then begin
    //--- Réservation en mémoire d'une zone de la taille voulue ---
    GetMem(Info, InfoSize);
    try
      //--- Copie dans le buffer des informations ---
      InfoType:='FileVersion';
      if GetFileVersionInfo(PChar(FileName), Handle, InfoSize, Info) then begin
         if VerQueryValue(Info,'\VarFileInfo\Translation',LangPtr, DataLen) then
            InfoType:=Format('\StringFileInfo\%0.4x%0.4x\%s'#0,[LoWord(LongInt(LangPtr^)),
                                         HiWord(LongInt(LangPtr^)), InfoType]);
         if VerQueryValue(Info,PChar(InfoType),InfoData,Datalen) then
             Result:=strPas(InfoData);
      end;
    Finally
      FreeMem(Info, InfoSize);
    End;
  End;
End;

Merci au forim developpez.com ou j'ai trouvé la solution que j'ai adaptée au code ci-dessus.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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,468 sec (3)

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