DLL-Versionsinformationen ermitteln
Moderator: Moderatoren
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
DLL-Versionsinformationen ermitteln
Ich will Versionsnummern DLLs ermitteln, die wir mit ausliefern (Laufzeitumgebung, Fremdbibliotheken). Bei eigenen DLLs geht das über LoadResource() recht einfach, bei fremden DLLs nicht ganz so leicht. Ich kenne die nötigen API-Funktionen und habe mich auch schon damit befasst, finde es aber unnötig kompliziert. Hat das schon jemand fertig?
Herzlich,
Tom
Tom
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: DLL-Versionsinformationen ermitteln
hi,
suchst du so etwas ?
suchst du so etwas ?
Code: Alles auswählen
Function GetFileVersion(cFile)
LOCAL cFileName := GetShortFileName(cFile)
LOCAL nStartAt := 0
LOCAL nInfoLen := DllCall("Version.dll", DLL_STDCALL, ;
"GetFileVersionInfoSizeA", cFileName, @nStartAt)
LOCAL cVersion := Space(nInfoLen)
if nInfoLen > 0 .and. ;
DllCall("Version.dll", DLL_STDCALL, "GetFileVersionInfoA", ;
cFileName, 0, nInfoLen, @cVersion) # 0
cVersion := upper(cVersion)
if At("FILEVERSION", cVersion) == 0
cVersion := StrTran(cVersion, chr(0) + chr(0), '>[@]<')
cVersion := StrTran(cVersion, chr(0), '')
cVersion := upper(StrTran(cVersion, '>[@]<', chr(0)))
if (nStartAt := At("FILEVERSION", cVersion)) > 0
nStartAt += 13
endif
elseif (nStartAt := At("FILEVERSION", cVersion)) > 0
nStartAt += 12
endif
if nStartAt > 0
nInfoLen := At(chr(0), cVersion, nStartAt)
cVersion := substr(cVersion, nStartAt, nInfoLen - nStartAt)
else
cVersion := ''
endif
endif
return (alltrim(cVersion))
Function GetShortFileName(cLongName)
LOCAL cShortName := Space(255)
LOCAL nNameLen := 1
if empty(cLongName)
return ('')
else
if Set(_SET_CHARSET) == CHARSET_OEM
cLongName := ConvToAnsiCp(cLongName)
endif
nNameLen := DllCall("Kernel32.DLL", DLL_STDCALL, "GetShortPathNameA",;
cLongName, @cShortName, len(cShortName))
endif
return (left(cShortName, nNameLen))
gruss by OHR
Jimmy
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: DLL-Versionsinformationen ermitteln
Nachtrag : Pablo hat eine CLASS TFileVersionInfo die noch mehr Informationen ausgibt
- Dateianhänge
-
- VerInfo.zip
- benötigt ot4xb
- (47.47 KiB) 242-mal heruntergeladen
gruss by OHR
Jimmy
Jimmy
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: DLL-Versionsinformationen ermitteln
Hallo, Jimmy.
Die Funktion, die Du vorher gepostet hattest, erfüllt ihren Zweck (nach einigen kleineren Anpassungen, die ich auch noch anmerken werde). Danke!
Die Funktion, die Du vorher gepostet hattest, erfüllt ihren Zweck (nach einigen kleineren Anpassungen, die ich auch noch anmerken werde). Danke!
Herzlich,
Tom
Tom