J'ai créé une dll toute bete (nomal, j'ai dit "J'ai créé" avec toute bete y'a pléonasme

Que disais-je ....... ah oui, j'ai créé cette DLL et j'ai utilisé le code de XOMBIE pour lire les infos que j'avais dedans (par curiosité).
Je sais, je sais, la curiosité est un vilain defaut

Code : Tout sélectionner
Procedure.s GetFileVersionInfo(File.s)
Protected iLibrary.l, iFunctionInfo.l, iFunctionSize.l, iFunctionQry.l, *HoldVersion.l, HoldResult.l, HoldBuffer.l, HoldEmpty.l
Protected HoldString.s, HoldReturn.s
Protected *HoldInfo.VS_FIXEDFILEINFO
iLibrary = OpenLibrary(#PB_Any, "version.dll")
If iLibrary
iFunctionInfo = GetFunction(iLibrary, "GetFileVersionInfoA")
iFunctionSize = GetFunction(iLibrary, "GetFileVersionInfoSizeA")
iFunctionQry = GetFunction(iLibrary, "VerQueryValueA")
If iFunctionInfo And iFunctionSize And iFunctionQry
HoldBuffer = CallFunctionFast(iFunctionSize, @File, @HoldEmpty)
HoldReturn = Space(HoldBuffer)
HoldResult = CallFunctionFast(iFunctionInfo, File, 0, HoldBuffer, @HoldReturn)
HoldResult = CallFunctionFast(iFunctionQry, @HoldReturn, "\", @HoldEmpty, @HoldBuffer)
*HoldInfo = AllocateMemory(SizeOf(VS_FIXEDFILEINFO))
CopyMemory(HoldEmpty, *HoldInfo, SizeOf(VS_FIXEDFILEINFO))
HoldString = Str(*HoldInfo\dwFileVersionMS >> 16 & $FFFF) + "." + Str(*HoldInfo\dwFileVersionMS & $FFFF) + "." + Str(*HoldInfo\dwFileVersionLS >> 16 & $FFFF) + "." + Str(*HoldInfo\dwFileVersionLS & $FFFF)
CloseLibrary(iLibrary)
FreeMemory(*HoldInfo)
HoldReturn = Space(0)
If HoldResult
ProcedureReturn HoldString
Else
ProcedureReturn ""
EndIf
EndIf
CloseLibrary(iLibrary)
EndIf
EndProcedure
Debug GetFileVersionInfo("c:\MDllPure.dll")

Code : Tout sélectionner
125.376.125.376
J'ai amélioré la version du forum anglais de Xombie, pour le format unicode ou ASCII
Code : Tout sélectionner
Procedure.s GetFileVersionInfo(File.s)
; procedure de Xombie ici http://www.purebasic.fr/english/viewtopic.php?t=18853
; modifiée pour mon besoin
Protected iLibrary.l, iFunctionInfo.l, iFunctionSize.l, iFunctionQry.l
Protected HoldString.s, HoldReturn.s, *HoldVersion, HoldResult.l
Protected HoldBuffer.l, HoldEmpty.l, *HoldInfo.VS_FIXEDFILEINFO
iLibrary = OpenLibrary(#PB_Any, "version.dll")
If iLibrary
CompilerIf #PB_Compiler_Unicode
iFunctionInfo = GetFunction(iLibrary, "GetFileVersionInfoW")
iFunctionSize = GetFunction(iLibrary, "GetFileVersionInfoSizeW")
iFunctionQry = GetFunction(iLibrary, "VerQueryValueW")
CompilerElse
iFunctionInfo = GetFunction(iLibrary, "GetFileVersionInfoA")
iFunctionSize = GetFunction(iLibrary, "GetFileVersionInfoSizeA")
iFunctionQry = GetFunction(iLibrary, "VerQueryValueA")
CompilerEndIf
If iFunctionInfo And iFunctionSize And iFunctionQry
HoldBuffer = CallFunctionFast(iFunctionSize, @File, @HoldEmpty)
If HoldBuffer
HoldReturn = Space(HoldBuffer)
HoldResult = CallFunctionFast(iFunctionInfo, File, 0, HoldBuffer, @HoldReturn)
If HoldResult
HoldResult = CallFunctionFast(iFunctionQry, @HoldReturn, "\", @HoldEmpty, @HoldBuffer)
If HoldResult
*HoldInfo = AllocateMemory(SizeOf(VS_FIXEDFILEINFO))
CopyMemory(HoldEmpty, *HoldInfo, SizeOf(VS_FIXEDFILEINFO))
HoldString = Str(*HoldInfo\dwFileVersionMS >> 16 & $FFFF) + "." + Str(*HoldInfo\dwFileVersionMS & $FFFF) + "." + Str(*HoldInfo\dwFileVersionLS >> 16 & $FFFF) + "." + Str(*HoldInfo\dwFileVersionLS & $FFFF)
CloseLibrary(iLibrary)
FreeMemory(*HoldInfo)
If HoldResult
ProcedureReturn HoldString
Else
ProcedureReturn ""
EndIf
EndIf
EndIf
EndIf
EndIf
CloseLibrary(iLibrary)
EndIf
ProcedureReturn ""
EndProcedure
Debug GetFileVersionInfo(("c:\MDllPure.dll")

Mes deux questions sont donc :
Qu'est ce que ça veut dire la réponse du 1er code de xombie "125.376.125.376" et pourquoi le 2e il dit plus rien

Merci et bonne journée