 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 02.10.2007, 20:46 Titel: FileVersio auslesen? |
|
|
Hi @all!
Ich habe mal versucht den Source von hier nach FB zu portieren: Code: | #ifndef __ENGINE32_FV_
#define __ENGINE32_FV_
#Include Once "windows.bi"
Function ING_GetFileVersion(File As String) As String
Dim lpVerInfo As Any Ptr
Dim rVerValue As Any Ptr
Dim As Dword dwInfoSize, dwValueSize, dwFileVersionMS, dwFileVersionLS
Dim dwDummy As Any Ptr
Dim lpstrPath As ZString Ptr
Dim Result As String
If Trim(File) = "" Then
Return ""
EndIf
lpstrPath=StrPtr(File)
dwInfoSize = GetFileVersionInfoSize(lpstrPath, dwDummy)
If dwInfoSize = 0 Then
Return ""
EndIf
Print "1"
lpVerInfo=Allocate(dwInfoSize)
GetFileVersionInfo(lpstrPath, 0, dwInfoSize, lpVerInfo)
VerQueryValue(lpVerInfo, 0, @rVerValue, Cast(Any Ptr, dwValueSize))
Result += Str(dwFileVersionMS Shr 16)
Result += Str(dwFileVersionMS and &hFFFF)
Result += Str(dwFileVersionLS shr 16)
Result += Str(dwFileVersionLS And &hFFFF)
DeAllocate(lpVerInfo)
Return Result
End Function
Print ING_GetFileVersion("Engine32.dll")
Sleep
#EndIf
|
Allerdings bleibt er irgendwo in der Function einfach hängen. Kann mir da jemand mal auf die Sprünge helfen? _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 02.10.2007, 21:07 Titel: |
|
|
kA ob dir das hilft, is aber kürzer und sollte auch klappen und ist sogar ohne winapi
Code: |
Public Function GetVersion(Filename As String) As String
Dim Buffer As String, VStr As String, Version As String, MChar As String
Dim FFl As Integer, Rpl As Integer
Dim Offset As Long
FFl = FreeFile
Open Filename For Binary As #FFl
Buffer = Space(LOF(FFl))
Get #FFl, 1, Buffer
Close #FFl
VStr = "P" + Chr(0) + "r" + Chr(0) + "o" + Chr(0) + "d" + Chr(0) + "u" + Chr(0) + "c" + Chr(0) + "t" + Chr(0) + "V" + Chr(0) + "e" + Chr(0) + "r" + Chr(0) + "s" + Chr(0) + "i" + Chr(0) + "o" + Chr(0) + "n" + Chr(0)
Offset = InStr(Buffer, VStr) + Len(VStr)
If Offset = Len(VStr) Then Exit Function
Do
Rpl = Rpl + 1
MChar = Mid(Buffer, Offset + Rpl * 2, 1)
If MChar <> Chr(0) Then Version = Version + MChar
Loop Until MChar = Chr(0)
Buffer = ""
GetVersion = Version
End Function |
ist auf VB ausgelegt, daher auch die vielen CHRs  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|