Ich habe da ein kleines Problem. Folgendes Programm soll aus eine exe Datei PNG Bilder "extrahieren".
Dazu lade ich die "exe" in den Speicher und durchsuche ihn nach der PNG Header Bytefolge ab.
Zum Testen einfach die Test.pb kompilieren und mit dem PNGExtract.pb öffnen.
Es funktioniert eigentlich. Aber mein Problem ist : Es läuft auf Windows 10, aber nicht auf Windows 7.
Beides 64 Bit Systeme und der "Extractor" ist lauch ein 64 Bit Kompilat.
Könnte mich jemand erhellen, wieso es auf Windows 7 nicht funktioniert... ?
Test.pb
Code: Alles auswählen
OpenWindow(0, 0, 0, 640, 480, "Test", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
Repeat
Event = WaitWindowEvent()
Until Quit
DataSection
Bild1:
IncludeBinary #PB_Compiler_Home + "Examples\Sources\Data\world.png"
Bild2:
IncludeBinary #PB_Compiler_Home + "Examples\Sources\Data\world.png"
EndDataSection
Code: Alles auswählen
UsePNGImageDecoder()
Global *Png_Start = AllocateMemory(8)
PokeQ(*Png_Start, $0A1A0A0D474E5089)
NewList Img()
File.s = OpenFileRequester("","","",0)
If File = "" : End : EndIf
ID = ReadFile(#PB_Any, File)
If ID
Size = Lof(ID)
*File = AllocateMemory(Size)
If *File
ReadData(ID, *File, Size)
EndIf
CloseFile(ID)
EndIf
MessageRequester("", "Los Gehts")
For a = 0 To Size - 8 ; Jedes Byte abklappern
If CompareMemory(*File + a, *Png_Start, 8)
AddElement(Img()) : Img() = CatchImage(#PB_Any, *File + a)
Height + ImageHeight(Img())
a + 8
EndIf
Next a
MessageRequester("", "Gefundene Bilder : "+Str(ListSize(Img())))
a = 1 : y = 0
OpenWindow(0, 0, 0, 640, 480, "Test", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
AddKeyboardShortcut(0, #PB_Shortcut_Escape, 59999)
ScrollAreaGadget(0, 0, 0, 640, 480, 1000, Height + 20)
ForEach Img()
ImageGadget(a, 10, y, 0, 0, ImageID(Img()))
a + 1
y + ImageHeight(Img())
Next
CloseGadgetList()
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_CloseWindow
Quit = #True
EndSelect
Until Quit