[C++] Version Resource

Version Resource [C++] - C++ - Programmation

Marsh Posté le 16-05-2002 à 14:35:09    

Comment je peux recuperer la resource VERSION :??:
 
J'arrive a recuperer des strings, des bitmaps, des icones, mais pas la version.
 
J'ai essaye avec GetFileVersionInfo (InfoSize, et VerQueryValue) mais impossible d'y arriver :sweat:


---------------
Super.
Reply

Marsh Posté le 16-05-2002 à 14:35:09   

Reply

Marsh Posté le 16-05-2002 à 16:09:33    

mais quel bide :sol:


---------------
Super.
Reply

Marsh Posté le 16-05-2002 à 17:41:46    

Je peux te donner le code en Pascal pour ça, ça doit pas être très différent... (vu que ça passe par les fonctions de l'API Windows)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 17-05-2002 à 09:04:27    

ouais je veux bien thx :)


---------------
Super.
Reply

Marsh Posté le 17-05-2002 à 09:44:50    

J'ai ça chez moi, j'ai pas été revoir le topic hier soir (je ne vais voir que les nouveaux topics, j'espérais que tu y postes une réponse entre 18 et 0h), va falloir attendre ce soir :D

 

[jfdsdjhfuetppo]--Message édité par antp le 17-05-2002 à 09:45:00--[/jfdsdjhfuetppo]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 17-05-2002 à 09:52:16    

Pas de prob.
Des que je rentre chez moi je fais un delete de ma memoire programmable donc pas de forum prog :/ :D


---------------
Super.
Reply

Marsh Posté le 17-05-2002 à 13:07:15    

Un peu comme antp, je te poste le code C++ pour faire ça ce soir (désolé je suis au boulot et j'ai pas mes codes sur moi :D )


---------------
Le Tyran
Reply

Marsh Posté le 17-05-2002 à 13:31:58    

Ha bhen si tu l'as directement en C++ c'est encore plus simple...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 17-05-2002 à 13:32:04    

ouais merci :bounce:


---------------
Super.
Reply

Marsh Posté le 17-05-2002 à 18:21:01    

Bon voilà le truc en Pascal, je suppose que tu pourras y récupérer ce dont tu as besoin:
 

Code :
  1. type
  2.   PFixedFileInfo = ^TFixedFileInfo;
  3.   TFixedFileInfo = record
  4.      Signature: DWord;
  5.      StrucVersion: DWord;
  6.      Minor: Word;
  7.      Major: Word;
  8.      Build: Word;
  9.      Release: Word;
  10.      FileFlagsMask: DWord;
  11.      FileFlags: DWord;
  12.      FileOS: DWord;
  13.      FileType: DWord;
  14.      FileSubtype: DWord;
  15.      FileDateMS: DWord;
  16.      FileDateLS: DWord;
  17.   end;
  18. function GetFileInfo(const AFileName: string): TFixedFileInfo;
  19. var
  20.   Handle, VersionSize: DWORD;
  21.   SubBlock: string;
  22.   Temp: Pointer;
  23.   Data: Pointer;
  24.   ErrMsg: PChar;
  25. begin
  26.   SubBlock := '\';
  27.   VersionSize := GetFileVersionInfoSize(PChar(AFileName), Handle);
  28.   if VersionSize > 0 then
  29.   begin
  30.     GetMem(Temp, VersionSize);
  31.     try
  32.       if GetFileVersionInfo(PChar(AFileName), Handle, VersionSize, Temp) then
  33.         if VerQueryValue(Temp, PChar(SubBlock), Data, VersionSize) then
  34.           Result := PFixedFileInfo(Data)^;
  35.     finally
  36.       FreeMem(Temp);
  37.     end;
  38.   end else
  39.   begin
  40.     if FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER or FORMAT_MESSAGE_FROM_SYSTEM,
  41.                       nil, GetLastError, 0, @ErrMsg, 0, nil) <> 0 then
  42.       try
  43.         raise Exception.Create(ErrMsg);
  44.       finally
  45.         LocalFree(Cardinal(ErrMsg));
  46.       end;
  47.   end;
  48. end;
  49. function GetBuild(const AFileName: string): string;
  50. begin
  51.   with GetFileInfo(AFileName) do
  52.     Result := Format('%d.%d.%d.%d', [Major, Minor, Release, Build]);
  53. end;


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 17-05-2002 à 18:21:01   

Reply

Marsh Posté le 17-05-2002 à 18:50:01    

En c++:
//FileName variables contenant le nom du fichier
unsigned long    t,taille;
unsigned int     size;
VS_FIXEDFILEINFO *pstruct;
 
temp=new char[taille=GetFileVersionInfoSize(FileName ,&t)];
 
GetFileVersionInfo(FileName ,0,taille,temp);
VerQueryValue(temp,"\\",(void**)(&pstruct),&size);
 
short major    = (short)(pstruct->dwFileVersionMS >> 16);      
short minor    = (short)(pstruct->dwFileVersionMS);
short realease = (short)(pstruct->dwFileVersionLS >> 16);
short build    = (short)(pstruct->dwFileVersionLS);
delete[] temp;


---------------
Le Tyran
Reply

Marsh Posté le 17-05-2002 à 22:05:32    

ok merci a tous les deux :)
 
Je vais sharcuter tout ca mardi :D


---------------
Super.
Reply

Marsh Posté le 19-05-2002 à 00:52:29    

t1 c bien compiqué ça en pascal lol  :lol:  :lol:  :lol:

Reply

Marsh Posté le 19-05-2002 à 01:02:04    

:sarcastic: ça fait pas la même chose
La version Pascal a la gestion d'erreur qui renvoie un message d'erreur, et renvoie la version en tant que chaîne formatée...
Et ça serait aussi plus facile s'il fallait pas convertir les chaînes en PChar (tableau de caractère finissant par 0) :D

 

[jfdsdjhfuetppo]--Message édité par antp le 19-05-2002 à 01:03:06--[/jfdsdjhfuetppo]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 21-05-2002 à 10:18:10    

letoII a écrit a écrit :

En c++:
//FileName variables contenant le nom du fichier
unsigned long    t,taille;
unsigned int     size;
VS_FIXEDFILEINFO *pstruct;
 
char *temp=new char[taille=GetFileVersionInfoSize(FileName ,&t)];
 
GetFileVersionInfo(FileName ,0,taille,temp);
VerQueryValue(temp,"\\",(void**)(&pstruct),&size);
 
short major    = (short)(pstruct->dwFileVersionMS >> 16);      
short minor    = (short)(pstruct->dwFileVersionMS);
short realease = (short)(pstruct->dwFileVersionLS >> 16);
short build    = (short)(pstruct->dwFileVersionLS);
delete[] temp;  




 
impeccable [:fifiz]
 
thx a tous les deux :jap:


---------------
Super.
Reply

Marsh Posté le 15-11-2002 à 00:17:59    

Reply

Marsh Posté le 15-11-2002 à 08:07:57    

en pascal au d'apres de ke g compris il définit la struct alors kelle est ds les header en cpp


---------------
-( BlackGoddess )-
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed