| |
|
|
| Mal als kleine Funktion chkXProfanVersionByExe die als Parameter einen Dateinamen erwartet und die Versionsnummer zurückliefert: KompilierenMarkierenSeparieren Umgesetzt basierend auf Informationen von einem Code von Roland RGH
KompilierenMarkierenSeparierenDeclare 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 |
|
|
| |
|
|