Icon extrahieren - Skript läuft nicht

  • Hi,
    ich habe nochmals eine Datei die nicht unter 64bit läuft.
    Das Skript ist auch nicht von mir, trotzdem wäre es schön es man es zum laufen bekommen könnte.
    Hier sind ja noch viele Winapi-Befehle selbst geschrieben. Ich habe versucht sie durch die "offiziellen" Befehle zu ersetzen, scheitere aber kläglich:(.
    Bekommt es von euch jemand hin?

  • ich denke du hast das selbe Problem wie bei deinem letzten x64 Thema...

    Die DllCall Aufrufe mit "long" sind wohl als Platzhalter für 64-bit zu klein.

    Aber auch ich würde gern mal die Frage stellen, warum x64 ?

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...

  • Habe im Skript nun doch ein paar Befehle durch dei offiziellen _Winapi_...-Funktionen ersetzen können.
    Allerdings behebt dies nichts das Problem mit der 64-Bit Version:(.


    Schnuffel
    Ich mache ein neues Thema auf wegen warum ich 64bit verwende.

  • Bekommt es von euch jemand hin?

    Das geht sehr viel kürzer und unabhängig von 32/64 Bit:

    AutoIt
    #include <WinAPIGdi.au3>
    #include <WinAPIIcons.au3>
    #include <WinAPIShellEx.au3>
    #AutoIt3Wrapper_UseX64=y
    Global $iIconSize = 64
    Global $hIcon = _WinAPI_ShellExtractIcon('shell32.dll', -42, $iIconSize, $iIconSize)
    _WinAPI_SaveHICONToFile(@ScriptDir & '\test.ico', $hIcon)
    _WinAPI_DestroyIcon($hIcon)
  • Aber nur etwas kürzer:klatschen:.
    Allerdings werden bei dem obigen Skript alle Icongrößen eines Icons in eine Datei exportiert.
    Bei deinem Skript muss man die Größe angeben.

  • Moin,

    die Funktion _ResourceEnumNames gibt es auch in einer _Winapi_-Version: _WinAPI_EnumResourceNames in #include <WinAPIRes.au3>.
    Damit sollte es zuverlässiger laufen.

  • Das klappt! ;) (Win 10)