Icon von beliebiger Datei in GUI einbinden

  • Schön guten Abend,

    ich versuche gerade die Icons von Dateien in einer GUI einzubinden, um sofort sichtbar zumachen, was der zugehörige Dateityp ist oder welches Programm sich hinter dem Dateipfad verbirgt.
    Mit .exe-Dateien habe ich es hinbekommen.

    Spoiler anzeigen
    [autoit]


    GUICreate("", 300, 100, 200, 150)
    GUISetState(@SW_SHOW)
    GUICtrlCreateIcon("mspaint.exe", -1, 0, 0, 32,32)
    Sleep(1000)

    [/autoit]

    Nun will ich, dass man auch viele andere Icons von verschieden Dateitypen einbinden kann. Gibt es da etwas universelles?
    Also in etwa so IconFromFile($filename) und dann mit GUICtrlCreateIcon(IconFromFile($filename), -1, 0, 0, 32,32) einbinden.
    Jemand eine Idee?

    Danke für eure Hilfe

  • Alle Dateiendungen (jpg,doc,mp4) werden in der Registry gespeichert. Dort steht auch, mit welchem Programm es verknüpft ist. Man müsste also die Dateiendung herausfinden (leicht) und dann in der Registry nach dem zugehörigen Programm suchen.

    Werde mich melden, falls ich was finde

    €DIT: Hab gefunden, wo die Dateiendungen sind (HKEY_CLASSES_ROOT), ist aber extrem schwer, dass umzusetzen

  • Ist doch nicht so schwer:
    1) Dateiendung aus dem Dateinamen auslesen
    2) unter HKEY_CLASSES_ROOT\{Endung_mit_Punkt} schauen, ob in "(Default)" was steht, und dann dort weitersuchen
    3) unter HKEY_CLASSES_ROOT\{Endung_oder_das_aus_Default}\DefaultIcon steht in "(Default)" der Pfad zu dem Icon.

    MfG, James C.

    PS: Zur Not mach ich irgendwann noch ein kleines Beispiel.

  • Also ich komm irgendwie nich weiter, denn die Schlüssel in der Registry variieren bei mir stark und die Standard-Werte sind teils falsch z.B. bei Wmv ist nicht der WMP eingetragen, sondern mein GOM-Player, der aber den WMVs nicht als Standard zugeordnet ist. Könntest du ein kleines Beispiel scripten? Wäre echt nett.

  • hi, dazu nimmst du _WinAPI_ExtractAssociatedIcon
    http://msdn.microsoft.com/en-us/library/…v=vs.85%29.aspx
    http://www.autoitscript.com/forum/topic/98712-winapiex-udf/

    [autoit]

    #Include <WinAPIEx.au3>

    [/autoit][autoit][/autoit][autoit]

    OnAutoItExitRegister("_destroyicons")

    [/autoit][autoit][/autoit][autoit]

    Global $hIcon2

    [/autoit][autoit][/autoit][autoit]

    GUICreate('MyGUI', 500, 500)
    $Icon = GUICtrlCreateIcon('', 0, 40, 40, 32, 32)
    $Icon2 = GUICtrlCreateIcon('', 0, 40, 80, 32, 32)
    $hIcon = _WinAPI_ShellExtractAssociatedIcon('',"C:\Your\File.type", 0)
    GUICtrlSendMsg($Icon, 0x0172, 1, $hIcon)

    [/autoit][autoit][/autoit][autoit]

    GUISetState()

    [/autoit][autoit][/autoit][autoit]

    While GUIGetMsg() <> -3

    [/autoit][autoit][/autoit][autoit]

    Wend

    [/autoit]