Icon einer Datei wie vom Explorer laden & per GDI+ zeichnen

  • Hey
    Ich möchte ein Icon in meinem Skript laden und es per GDI+ dann zeichnen.
    Ich habe zB einen solchen Pfad "C:\Users\aaaa\Desktop\wichtig.txt" und möchte jetzt das Icon, wie es auf dem Desktop angezeigt wird. Genau das gleich möchte ich auch mit *.exe machen.

    Hoffentlicht versteht ihr was ich meine :D
    Danke für eure Hilfe :thumbup:
    MfG AntiSpeed

    Nur keine Hektik - das Leben ist stressig genug

    Einmal editiert, zuletzt von AntiSpeed (3. Februar 2011 um 23:10)

  • Probier es doch mit IcoFX ( wurde hier verschiedentlich emfohlen ). Damit kannst Du Icons ( .ico ) bearbeiten, aber auch Icons aus Exe oder DLL Dateien rausextrahieren.

  • Öhhmm? :wacko:

    Zitat

    Ich möchte ein Icon in meinem Skript laden und es per GDI+ dann zeichnen.

    Und ja, das wurde in der SB schon gesagt.

    Nur keine Hektik - das Leben ist stressig genug

  • So jetzt hab ich es selber rausgefunden.

    [autoit]

    Global $iRet, $sFile="C:\Program Files\7-Zip\7zG.exe",$iIndex=0, $hIcon, $tIcon = DllStructCreate("handle Handle")
    $iRet = _WinAPI_ExtractIconEx($sFile, $iIndex, DllStructGetPtr($tIcon), 0, 1)
    ;$iRet = _WinAPI_ExtractIconEx($sFile, $iIndex, 0, DllStructGetPtr($tIcon), 1)
    $hIcon = DllStructGetData($tIcon, "Handle")
    _WinAPI_DrawIcon(_WinAPI_GetDC($hGui),0,0,$hIcon)
    _WinAPI_DestroyIcon($hIcon)

    [/autoit]

    Trotzdem Danke an alle :thumbup:

    Nur keine Hektik - das Leben ist stressig genug

  • Finde ich verwunderlich, dass es mit _WinAPI_ExtractIconEx funktioniert, wo doch in der Hilfe steht "Name der dll oder ico Datei, von welcher Icons extrahiert werden sollen", was mich in der SB stutzig gemacht hat. Aber dennoch schön, dass es funktioniert.

    Wie auch immer, du solltest dennoch den DC in einer Variable speichern und anschließend mit _WinAPI_ReleaseDC wieder freigeben. Das ist sicherer und spart vor allem Ressourcen, da du ihn ja nur einmal benutzt.