Italia
Fonte/ Codesnippets

Auslesen Ermitteln Exe Kompilat Version Xprofan

 
Mal als kleine Funktion chkXProfanVersionByExe die als Parameter einen Dateinamen erwartet und die Versionsnummer zurückliefert:
KompilierenMarkierenSeparieren
'{$cleq}
CLS
print chkXProfanVersionByExe(loadfile$("","*.exe"))
waitinput
end

proc chkXProfanVersionByExe

    parameters fle$
    var vers&=0
    var ofm&=SET("FileMode",0)
    var fh&=assign(fle$)

    if fh&

        openRW fh&

        ifnot %ioResult

            seek fh&,128
            seek fh&,getLong(fh&)+7
            case getlong(fh&) = $4E41464F : vers&=instr(chr$(getByte(fh&)),"0000000003456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")*0.5
            close fh&

        endif

        assign fh&,""

    endif

    SET("FileMode",ofm&)
    return vers&

endproc


Umgesetzt basierend auf Informationen von einem Code von Roland
RGH

KompilierenMarkierenSeparieren
Declare File$, hDatei&, Version$, Adresse&
CLS
Datei$ = LoadFile$("Profn-Programm öffnen:", "*.exe")

If File$ > ""// Es wurde eine File ausgewählt

    hDatei& = Assign(File$)
    OpenRW hDatei&// File binär öffnen
    Seek hDatei&, $80// An dieser Position steht die Adresse des Compilates
    Adresse& = GetLong(hDatei&)
    Seek hDatei&, Adresse&// hier beginnt das Compilat
    Version$ = GetChar$(hDatei&, 18)
    // Die ersten 11 Zeichen sind immer " RGH-PROFAN"

    If Mid$(Version$, 1, 11) <> " RGH-PROFAN"

        MessageBox("Kein mit PROFAN² oder XProfan erzeugtes Programm!", "Hinweis:", 16)
        Close hDatei&
        End

    EndIf

    // Das 12. Zeichen ist die Version des Compilates und lässt Rückschlüsse auf die
    // XProfan-Version zu
    Version$ = Substr$(Version$, 12)

    Select Version$

        CaseOf "3" : Print "Profan² 5 (32 Bit)"

        CaseOf "4" : Print "Profan² 5 (32 Bit) mit $P* verschlüsselt"

        CaseOf "5" : Print "Profan² 6 (32 Bit)"

        CaseOf "6" : Print "Profan² 6 (32 Bit) mit $P* verschlüsselt"

        CaseOf "7" : Print "Profan² 7"

        CaseOf "8" : Print "Profan² 7 mit $P* verschlüsselt"

        CaseOf "9" : Print "XProfan 8"

        CaseOf "A" : Print "XProfan 8 mit $P* verschlüsselt"

        CaseOf "B" : Print "XProfan 9"

        CaseOf "C" : Print "XProfan 9 mit $P* verschlüsselt"

        CaseOf "D" : Print "XProfan 10"

        CaseOf "E" : Print "XProfan 10 mit $P* verschlüsselt"

        CaseOf "F" : Print "XProfan 11 oder X2"

        CaseOf "G" : Print "XProfan 11 oder X2 mit $P* verschlüsselt"

        Otherwise  : Print "Unbekannte Version " + Version$

    EndSelect

    Close hDatei&
    WaitInput

EndIf

End


Wegen eines Fehlers in XPSE bezüglich der Funktion GetLong per XPSE (momentan) nur mit GetWord-Workaround possibile:
KompilierenMarkierenSeparieren
 {$cleq}
CLS
print chkXProfanVersionByExe(loadfile$("","*.exe"))
waitinput
end

proc chkXProfanVersionByExe

    parameters fle$
    var vers&=0
    var ofm&=SET("FileMode",0)
    var fh&=assign(fle$)

    if fh&

        openRW fh&

        ifnot %ioResult

            seek fh&,128
            seek fh&,getWord(fh&)+getWord(fh&)*65536+7
            case getWord(fh&)+getWord(fh&)*65536 = $4E41464F : vers&=instr(chr$(getByte(fh&)),"0000000003456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")*0.5
            close fh&

        endif

        assign fh&,""

    endif

    SET("FileMode",ofm&)
    return vers&

endproc


311 kB
Hochgeladen:14.12.2010
Downloadcounter108
Download
 
14.12.2010  
 



Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

3.250 Views

Untitledvor 0 min.
Member 862464113.05.2024
Sven Bader09.03.2021
Matzbub29.12.2018
AndreasS27.11.2018
Di più...

Themeninformationen

Dieses Thema hat 1 subscriber:

iF (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie