Aktuelle Zeit: 28.03.2020 11:40

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Win10 != Win 7 : Speicherproblem
BeitragVerfasst: 19.09.2018 00:23 
Offline
Benutzeravatar

Registriert: 01.04.2007 20:18
Hallo.

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:
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


und hier die PNGExtract.pb
Code:
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

_________________
PureBasic 5.71 LTS (Windows x86/x64) | Windows10 Pro x64 | Z370 Extreme4 | i7 8770k | 32GB RAM | iChill GeForce RTX 2080 Super | HAF XF Evo​​


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Win10 != Win 7 : Speicherproblem
BeitragVerfasst: 19.09.2018 07:57 
Offline

Registriert: 26.11.2017 16:17
Wohnort: Wien
Edit: vorherigen Blödsinn gelöscht.

Die Signatur ist in dem Bild vorhanden.
Aber bei mir ist es unter Windows 7 Home 64-Bit so, dass eine ausfühbare Datei, eine exe oder bat usw., für ~ 1 Minute gesperrt ist, wenn sie im Explorer oder irgendeinem Dateidialog angezeigt wird. Darum wird bei mir kein Bild gefunden. Wenn ich aber den Pfad zu der 'Test.exe' in den Dialog händisch kopiere, ohne das die 'Test.exe' angezeigt wird, funktioniert es, und es werden die zwei PNGs gefunden.
Ich muss aber immer diese Minute abwarten. Ich kann auch nicht zweimal hintereinander kompilieren, da gibt es eine Fehlermeldung von PB. Das ganze hat mit irgendeinem Windows-Update begonnen.

Peter


Zuletzt geändert von DePe am 19.09.2018 08:37, insgesamt 5-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Win10 != Win 7 : Speicherproblem
BeitragVerfasst: 19.09.2018 08:02 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Wird wie schon erwähnt ein Signatur Problem sein da es bei mir mit Windows 7 funktioniert
(hab das PNG mit MsPaint erstellt).

Versuch es mal ohne das erste Byte.

_________________

Links:
PureBasic Discord
[ENGINE] 2D Engine Nautilus (Win)
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Win10 != Win 7 : Speicherproblem
BeitragVerfasst: 19.09.2018 08:58 
Offline
Benutzeravatar

Registriert: 07.06.2005 19:47
Wohnort: Witten
Also, hier läuft das glatt, ohne Verzögerung.
Win7 64 bit, nur der übliche MS-Virenscanner im Einsatz.

_________________
Ist das Kunst hier, oder kann das weg ?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Win10 != Win 7 : Speicherproblem
BeitragVerfasst: 19.09.2018 09:14 
Offline

Registriert: 26.11.2017 16:17
Wohnort: Wien
Ich habe es nochmal probiert, jeweils 32 und 64-Bit Versionen vom Extractor und Test.exe. Öffne ich eine Test.exe mit dem Dialog funktioniert es vielleicht beim erstenmal, dann nicht mehr. Außer ich warte wieder über eine Minute. Benenne ich die Test.exe um in Test.dat, warte ich wieder die Minute, dann funktioniert es immer, 32- und 64-bit Versionen.

Ein Virenscanner außer dem MS Defender ist nicht installiert. Ändert aber nichts wenn man ihn deaktiviert.

Peter


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Win10 != Win 7 : Speicherproblem
BeitragVerfasst: 19.09.2018 09:21 
Offline
Benutzeravatar

Registriert: 01.04.2007 20:18
Bei dem W7 ist kein Virenscanner drauf, bei W10 der Standard Windows Defender.
Also denke ich an dem AV Gewurschtel wirds nicht liegen.

Mijikai hat geschrieben:
Versuch es mal ohne das erste Byte.

Welches erste Byte ? Meinst du damit die 137 ($89) ? Dieser Wert gehört zum PNG wie das Amen in die Kirche ;)

DePe hat geschrieben:
Benenne ich die Test.exe um in Test.dat, warte ich wieder die Minute, dann funktioniert es immer, 32- und 64-bit Versionen.


Wäre natürlich eine Möglichkeit, das File vor dem einlesen umzubenennen und danach wieder zurück, wobei das aber nur eine Notlösung sein kann. Viel dringender ist die Ursache ...

_________________
PureBasic 5.71 LTS (Windows x86/x64) | Windows10 Pro x64 | Z370 Extreme4 | i7 8770k | 32GB RAM | iChill GeForce RTX 2080 Super | HAF XF Evo​​


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Win10 != Win 7 : Speicherproblem
BeitragVerfasst: 19.09.2018 09:29 
Offline

Registriert: 26.11.2017 16:17
Wohnort: Wien
Ich glaube mich zu erinnern, dass es mit Windows 7 Pro 32-Bit ohne Servicepack 1 dieses Problem nicht gab. Nach irgendeinen Upate ist das Problem dann aufgetaucht.
Windows 7 Home 64-Bit habe ich nur mit integriertem Servicepack 1, und da ist das Problem direkt nach der Installation vorhanden.

Mit Sysinternals Process Explorer habe ich versucht den Schuldigen zu finden, aber es ist irgendein Systemprozess wo keine weiteren Information angezeigt werden.

Es betrifft aber nur ausführbare Dateien die im Windows Explorer angezeigt werden. Oder anderen Dateimanagern, ich verwende z.B. den Speed Commander.
Wenn ich eine .exe lösche, bleibt sie ~ 1 Minute sichtbar und verschwindet dann.
Alles ohne Fehlermeldung, außer ich will sie nochmals löschen, weil sie noch sichtbar ist.

Bei FAT32 gibt es das Problem nicht, nur beim NTFS-Dateisystem.

Peter


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Win10 != Win 7 : Speicherproblem
BeitragVerfasst: 19.09.2018 10:05 
Offline
Benutzeravatar

Registriert: 07.06.2005 19:47
Wohnort: Witten
Ich muss mich allerdings korrigieren, ich hatte das Extractprogramm nur unter dem Debugger laufend getestet.
Hat jedesmal funkionier, auch "sub-minutiös"
In der Tat ist es mit dem kompilierten Programm anders.

aber mit folgender Änderung
ID = ReadFile(#PB_Any, File, #PB_File_SharedRead )

klappt's endgültig bei mir.



Code:
UsePNGImageDecoder()

Global *Png_Start = AllocateMemory(8)
PokeQ(*Png_Start, $0A1A0A0D474E5089) 

NewList Img()
OpenConsole("Bisonte")

File.s = OpenFileRequester("Test.exe","C:\Users\Dirk-A\Pictures\test.exe","*.exe|*.exe",0)

If File = "" : End : EndIf

ID = ReadFile(#PB_Any, File, #PB_File_SharedRead )
PrintN( Str( GetLastError_() ) )
If ID
 
  Size = Lof(ID)
 
  *File = AllocateMemory(Size)
 
  If *File
    a = ReadData(ID, *File, Size)
    PrintN( Str(a) )
  EndIf
  CloseFile(ID)
EndIf
MessageRequester("", "Los Gehts")
PrintN(Str(size) ) 
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

_________________
Ist das Kunst hier, oder kann das weg ?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Win10 != Win 7 : Speicherproblem
BeitragVerfasst: 19.09.2018 10:10 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Eventuell mal mit Filemapping versuchen.

_________________

Links:
PureBasic Discord
[ENGINE] 2D Engine Nautilus (Win)
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Win10 != Win 7 : Speicherproblem
BeitragVerfasst: 19.09.2018 10:29 
Offline

Registriert: 26.11.2017 16:17
Wohnort: Wien
Hi Captn. Jinguji,

mit #PB_File_SharedRead funktioniert es auch bei mir sofort und immer.

Peter


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye