Dll informations ?????
Publié : jeu. 27/sept./2007 11:05
Bonjour à tous
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
Et ça m'a répondu "quequechose"
Par contre j'ai apres utilisé celle de DENIS, qui a dit :
Et la ma DLL "Acoseplus"
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
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