Icons als Datei in exe einbinden und mit Code wieder abrufen

  • Hallo Leute,
    ich bin wieder mal etwas am versuchen und bis jetzt immer gescheitert.
    Ich habe mir eine Date Icons.icl mit vielen Icon erstellt.
    Nun kann man mit Region #AutoIt3Wrapper_Res_File_Add=Icons.icl die Datei beim compilieren in die Datei mitpacken.

    Resource Hacker zeigt mir jetzt die Datei im Ordner RCData 1:1031 als Anlage.


    Meine Frage ist jetzt wie kann ich am Anfang vom Programm abfrage machen dass wenn das Skript kompiliert ist er mir grade diese Datei als meine Icons.icl nutzen soll?


    Ist das überhaupt so mit Autoit möglich?


    Danke schon mal für die Hilfe!

    Edit:
    Ach ja - ich hab es mit einzelnen Icons immer bis jetzt so gemacht: z.B. GUISetIcon(@AutoItExe, 150, $hWnd).
    Nur habe ich noch nicht rausgefunden wie man die ganze Datei aus der Exe ansprechen kann.

    Einmal editiert, zuletzt von turbobaby (11. Oktober 2016 um 08:51)

  • Hallo UEZ,

    danke für den Tip!
    Hab es herumgetestet und muss sagen, Super UDF!
    Allerdings verstehe ich es nicht ganz wie ich es in meinem Fall umsetzen soll.

    Ich füge das also jetzt so in die Exe ein: #AutoIt3Wrapper_Res_File_Add=D:\Experiment44\Icons.icl, RT_RCDATA, ICO_3, 0

    Wie kann ich jetzt diesen Satzt so anpassen dass ich anstatt der Datei auf der Festplatte die aus der Exe vewende?
    Dim $sIconLib = @ScriptDir & "\Icons.icl"
    GUISetIcon($sIconLib, -4)

    GUICtrlCreateIcon($sIconLib, 4, 5, 5, 32, 32)


    GUICtrlSetImage(-1, $sIconLib, -57)
    GUICtrlSetImage(-1, @AutoItExe, 227)

    Wie kann ich das jetzt in $sIconLib übergeben, damit ich es über den ganzen Code nutzen kann?

    Bin leider sehr schlecht in Englisch um mir die Fragen im englischen Forum zu stellen.

  • Hast du es mal mit _Resource_GetAsIcon() probiert?

    Da du kein Beispiel hochgeladen hast, kann ich selbst nicht testen.

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Ich habe jetzt die Example.au3 genommen.
    Da gibt es z.B. diesen Code

    Local $iMerlin = GUICtrlCreateButton('', $iWidth - 68, 0, 68, 71)
    _Resource_SetToCtrlID(-1, 'MERLIN_1') ; Use the last controlid.

    Wie kann ich nun das so machen dass anstatt die MERLIN_1 z.B. ICONS_1 genommen wird daraus aber das Icon 3 oder so.

    Local $iExitButton = GUICtrlCreateButton('', 320, $iHeight - 30, 85, 25)
    _Resource_SetToCtrlID(-1, 'ICONS_1', 3)
    oder meinst du so???
    _Resource_GetAsIcon(-1, 'ICONS_1', 3) <- und hier halt das Icon Nr. 3 in der ICL Datei. So funktioniert es nicht.

    Bei "Func _Resource_GetAsIcon($sResNameOrID, $iResType = $RT_RCDATA, $sDllOrExePath = Default)" kann ich doch auch nicht angeben welches Icon ich aus der ICL Datei verwenden will.

    Soweit ich es verstehe kann ich mit _Resource_GetAsIcon nur eine normale ICO Datei angeben, da da nur eine Bild drin ist oder nicht???

    Edit:
    Normallerweise würde ich für einzelne Icons das so machen
    GUICtrlSetImage(-1, @AutoItExe, 183)
    Wobei man dann immer die Position wie hier 183 wissen muss
    Und einzel aus Datei so
    GUICtrlSetImage(-1, Icons.icl, -7)

    2 Mal editiert, zuletzt von turbobaby (11. Oktober 2016 um 17:23)