Eigenes Icon für Button aus compilierter exe (mit Wrapper) setzen

  • Ich habe mit dem Wrapper ein zusätzliches Icon in meine Exe compiliert.

    [autoit]

    #AutoIt3Wrapper_Res_Icon_Add=D:\Build\compstui.dll-66-1.ico
    #AutoIt3Wrapper_Res_Icon_Add=D:\Build\mmcndmgr.dll-63_2.ico

    [/autoit]


    und versuche sie jetzt in der GUI zu setzen, aber der Button bleibt ohne Icon...

    [autoit]

    $Button4 = GUICtrlCreateButton("Button5", 68, 139, 26, 26, $BS_ICON) ;Info
    GUICtrlSetImage($Button4, @ScriptFullPath,50)

    [/autoit]


    Wie spreche ich das Icon richtig an?
    resourcehacker.exe zeigt mir das Icon unter Icon\50\1031 an.

    Einmal editiert, zuletzt von Poloshirt (13. November 2009 um 10:41)

  • Hilft dir das?

    Toolbar Beispiel von Bugfix
    [autoit]


    #include <GuiToolbar.au3>
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Constants.au3>
    #include <GDIPlus.au3>

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

    Local $hGUI, $hToolbar
    Local $idSciTE = 1000 ; ID für ToolbarButton vergeben, 1000 - damit kein Konflikt mit Standard-Controls entsteht

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

    Local $ressource = 'C:\Programme\AutoIt3\SciTE\SciTE.exe' ; Datei mit dem(n) BMP
    Local $resID = 100 ; ID des BMP in der Ressourcendatei (kannst du im Reshacker sehen)

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

    ; Datei laden als Ressource
    Local $hInstance = _WinAPI_LoadLibrary($ressource)

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

    ; Create GUI
    $hGUI = GUICreate("Toolbar", 400, 300)
    $hToolbar = _GUICtrlToolbar_Create($hGUI)
    GUISetState()

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

    ; BMP aus SciTE laden zur Toolbar
    _GUICtrlToolbar_AddBitmap($hToolbar, 1, $hInstance, $resID)

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

    ; Button auf Toolbar mit diesem BMP erstellen
    _GUICtrlToolbar_AddButton($hToolbar, $idSciTE, 0)

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

    While 1
    If BitAND(_GUICtrlToolbar_GetButtonState($hToolbar, $idSciTE), $TBSTATE_PRESSED) = $TBSTATE_PRESSED Then
    MsgBox(0, "", "SciTE-Button")
    EndIf

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

    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_Close
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • nuts
    Ich glaube er meint wie er das eingebundene icon verwenden kann

    aber warum willst du es eigentlich einbinden es reicht doch der pfad der dll als @ScriptFullPath und ich denke das der index denke ich ist 1

  • Edit: Danke schonmal für die schnellen Antworten.

    Spoiler anzeigen

    Folgendes hat keinen Effekt. Hab das ohne Create toolbar, denn ich möchte keine richtige Toolbar erstellen, sondern nur das icon ändern.

    [autoit]

    Local $hInstance = _WinAPI_LoadLibrary(@ScriptFullPath); Datei laden als Ressource
    _GUICtrlToolbar_AddBitmap($main_GUI,$Button4,$hInstance,50)

    [/autoit]


    In der Hilfe habe ich folgendes zum Wrapper gefunden:
    ;Add extra ICO files to the resources which can be used with TraySetIcon(@ScriptFullPath, 3) etc
    ; list of filename of the Ico files to be added, First one will have number 3, then 4 ..etc

    @simon: ID 1 zeigt das SkriptIcon an. Ich habs geschafft, es anzuzeigen: Im Reshacker gabs ganz unten noch einen Menüpunkt "24" da wars mit der ID 201 drin. Leider wird das Icon jetzt schändlich verpixelt, denn es wird vergrößert so dass es nicht mehr in den Button reinpasst. Eine Idee? Edit: IDs -5 und -6 vergrößern das Icon auch

    2 Mal editiert, zuletzt von Poloshirt (13. Oktober 2009 um 17:16)

  • Ein Beispiel:

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=iconPLUS1.exe
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Res_Icon_Add=C:\Test\10.ico
    #AutoIt3Wrapper_Res_Icon_Add=C:\Test\11.ico
    #AutoIt3Wrapper_Res_Icon_Add=C:\Test\12.ico
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

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

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>

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

    #Region - GUI Create
    GUICreate(' iconPLUS - Example by Ritzelrocker04', 400, 400)
    $Checkbox = GUICtrlCreateCheckbox("cb", 30, 90, 150, 40, BitOR($BS_ICON, $BS_PUSHLIKE))
    GUICtrlSetImage(-1, @ScriptFullPath, -7)
    $bnOK = GUICtrlCreateButton("OK", 20, 350, 75, 40, $BS_ICON)
    GUICtrlSetImage(-1, @ScriptFullPath, -5)
    $bnClose = GUICtrlCreateButton("b", 305, 350, 75, 40, $BS_ICON)
    GUICtrlSetImage(-1, @ScriptFullPath, -6)
    GUISetState()
    #EndRegion - GUI Create

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

    #Region - GUI SelectLoop
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE Or $msg = $bnClose
    MsgBox(64, " iconPLUS - Example", "Viel Spaß wünscht RR04 !" & @TAB, 3)
    Exit
    Case $msg = $bnOK
    MsgBox(64, " iconPLUS - Example", "OK wurde gedrückt !" & @TAB)
    Case $msg = $Checkbox
    MsgBox(64, " iconPLUS - Example", "CheckBox wurde gedrückt !" & @TAB)
    EndSelect
    WEnd
    #EndRegion - GUI SelectLoop

    [/autoit]


    Viel Erfolg ! ;)

  • RR04: WOW! Super! ich denke das dürfte nicht nur mir hilfreich sein!
    Für diejenigen, die keine Icons sondern beliebige andere Dateien einbinden möchten habe ich noch eine Alternative gefunden: resource.au3 im englischen Forum.
    Danke an euch alle!

    Eine Frage habe ich noch: Wie kann man verhindern, dass das Icon vergrößert wird? Ich habe ein Icon von 23x23 Pixel erstellt, es wird trotzdem immer auf 32 Pixel vergrößert.