Bug in Autoit v3.3.8.1

  • Hallo,
    bin nicht so sicher wo ich das melden kann, denke aber hier sind User die das wissen und weiterleiten können.

    Unter Windows 7 (64Bit) gibt die Funktion _MemoryPointerRead aus der NomadMemory.au3 mit Autoit v3.3.8.1 nur den Wert 0 zurück.
    Mit Autoit v3.3.6.1 funktioniert alles Einwandfrei.

    Gruß Jane

  • danke, ich war schon kurz davor mir die Autoit v3.3.8.1 aufzuspielen... ich kann ehrlich gesagt gar nix anfangen mit der aussage von dir lieber bugfix. was ist denn ein standard syntax der bei den dll-calls nicht eingehalten wurde ? ... in dem changelog zwischen 3.3.6.1 und 3.3.8.1 konnte ich nix entdecken, was darauf hinweist das solche probleme auf einen zukommen könnten.

    Einmal editiert, zuletzt von WhiteLion (19. Februar 2012 um 14:13)

  • DllStructGetData() mit Int() nutzen, sollte das Problem lösen, also

    [autoit]

    Hex(DllStructGetData($v_Buffer, 2))

    [/autoit]

    ersetzen durch:

    [autoit]

    Hex(Int(DllStructGetData($v_Buffer, 2)))

    [/autoit]

    usw...

  • ich erinnere mich, das ich damals den Dll Call angepasst hatte, was dann so aussieht:

    [autoit]

    DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'HANDLE', $ah_Handle[1], 'INT_PTR', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'ULONG_PTR', DllStructGetSize($v_Buffer), 'int', '')

    [/autoit]

    für mich war es bei dieser modifikation wichtig, dass ich auch native 64 bit anwendungen auslesen konnte und nicht nur 32 bit.

    • Offizieller Beitrag

    ich kann ehrlich gesagt gar nix anfangen mit der aussage von dir lieber bugfix. was ist denn ein standard syntax der bei den dll-calls nicht eingehalten wurde ?


    Gerade die StrukturCalls wurden geändert. Und wenn Probleme in Nicht-Standard-Funktionen auftreten, sollte man immer in dieser Funktion suchen und nicht AutoIt dafür verantwortlich machen.

  • Hi,

    Zitat von White Lion

    was ist denn ein standard syntax der bei den dll-calls nicht eingehalten wurde ?

    Tja, eben die Syntax!
    Dazu gehört auch, die Funktion in der DLL mit den RICHTIGEN Typen aufzurufen. War es bei 32 Bit noch (meistens) schnurz, ob man "ptr", "int" oder "hwnd" oder "dword" übergeben hat, reagieren die 64-Bit-Typen da etwas empfindlicher. Was du ja selbst erkannt hast:

    Zitat

    ich erinnere mich, das ich damals den Dll Call angepasst hatte, was dann so aussieht:

  • Vielen Dank für die Antworten.
    Dachte es liegt an Autoit, da es mit den alten Versionen geht.