Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

FileVersio auslesen?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 02.10.2007, 20:46    Titel: FileVersio auslesen? Antworten mit Zitat

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. neutral Kann mir da jemand mal auf die Sprünge helfen?
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 02.10.2007, 21:07    Titel: Antworten mit Zitat

kA ob dir das hilft, is aber kürzer und sollte auch klappen und ist sogar ohne winapi happy

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 happy
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 02.10.2007, 21:40    Titel: Antworten mit Zitat

Thx lächeln

Kurz nochmal vereinfacht, funzt, danke!
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz