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

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • 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)