Ressourcen Daten (Buttons...) aus DLL mit AutoIt laden

  • Hi,
    ich möchte mit AutoIt Buttons und Mausicons in meine EXE laden, ohne diese frei in einem Ordner liegen zu lassen.
    Im Internet habe ich per Google gefunden, dass Bilder normalerweise in .rc/.res Dateien gepackt werden und dann in die exe geladen werden.
    In AutoIt gibt es (so wie ich es nach der Dokumentation interpretieren kann) nur funktionen zum DLL öffnen.

    Ich habe ebenfalls gelesen, dass man .rc dateien in DLL's exportieren kann und diese DLL's wiederum von der EXE aufrufen kann.

    Lange Rede kurzer Sinn,
    ich möchte meine Buttons für eine GUI Anwendung laden.
    Aber ich möchte sie auch nicht frei liegen lassen.

    Gibt es in AutoIt eine Möglichkeit Bilder aus DLL's oder .rc/.res Dateien zu laden oder .rc/.res Dateien in die EXE zu laden :3 ?

    Lg
    Akkarin

    5 Mal editiert, zuletzt von Accarin (31. Dezember 2008 um 15:33)

  • okay >.>
    ich hab jetzt versucht die dateien direkt in die exe einzubinden aber das Hintergrundbild wird einfach nicht angezeigt -.-
    Hier ist der Codeschnipsel:

    [autoit]

    #AutoIt3Wrapper_useupx=n
    #AutoIt3Wrapper_run_after=ResHacker.exe -add %out%, %out%, credits.bmp, bitmap, IMG_01, 0
    #AutoIt3Wrapper_run_after=upx.exe --best --compress-resources=0 "%out%"
    #include <GUIConstants.au3>
    #include "resources.au3"
    #include "StaticConstants.au3"

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

    #Region ### START Koda GUI section ### Form=
    $Form2 = GUICreate("BSP", 420, 350, 504, 318)
    $Pic1 = GUICtrlCreatePic("", 0, 0, 420, 350)
    _ResourceSetImageToCtrl($Pic1, "IMG_01", $RT_BITMAP)
    $Button1 = GUICtrlCreateButton("Weiter", 96, 248, 209, 41, 0)
    GUICtrlSetFont(-1, 20, 400, 0, "BIRTH OF A HERO")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]

    Lg
    Accarin

  • ja hab ich ...
    wird immer noch nich angezeigt :x
    ResHacker ist im selben Verzeichnis wie die exe...

    Lg
    Accarin

  • bringt nichts, immernoch kein pic...
    und die .au3 hatte ich mit "..." in dem gleichen Verzeichnis :S

    Lg
    Accarin

  • ja hab ich ...
    wird immer noch nich angezeigt :x
    ResHacker ist im selben Verzeichnis wie die exe...

    Lg
    Accarin


    ResHacker muss ins AutoIt3Wrapper Verzeichnis !;)
    C:\Programme\AutoIt3\SciTE\AutoIt3Wrapper

    Und achte beim kompilieren auf die Konsolenausgabe ...

    EDIT:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <StaticConstants.au3>
    #include "resources.au3"

    [/autoit]

    Gruß


  • hm hab den ResHacker.exe in das Verzeichnis reinkopiert, dass du mir gesagt hast (musste ich neu erstellen)
    funktioniert immer trotzdem noch nicht...
    das Bild wird weiterhin nicht angezeigt :S

    Okay nochmal vollständig :P
    ich habe einen Ordner:
    In der ist das zu kompilierende Script drin und auch noch das bild img.bmp und die resources.au3
    und mit diesem Code:

    [autoit]

    #AutoIt3Wrapper_useupx=n
    #AutoIt3Wrapper_run_after=ResHacker.exe -add %out%, %out%, img.bmp, bitmap, IMG_01, 0
    #AutoIt3Wrapper_run_after=upx.exe --best --compress-resources=0 "%out%"
    #include <GUIConstants.au3>
    #include "resources.au3"
    #include <StaticConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form2 = GUICreate("BSP", 420, 350, 504, 318)
    $Pic1 = GUICtrlCreatePic("", 0, 0, 420, 350)
    _ResourceSetImageToCtrl($Pic1, "IMG_01", $RT_BITMAP)
    $Button1 = GUICtrlCreateButton("Weiter", 96, 248, 209, 41, 0)
    GUICtrlSetFont(-1, 20, 400, 0, "BIRTH OF A HERO")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]

    kommt nur die GUI Anwendung ohne das erwünschte Hintergrundbild raus :<

    Lg
    Accarin

  • aah okay :3
    hab jetzt mal das Bild mit dem Compile Tool hinzugefügt..

    nur gibt er mir jetzt diesen Code

    [autoit]

    Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Res_File_Add=img.bmp, bitmap, IMG_01
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

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

    #include <GUIConstants.au3>
    #include "resources.au3"
    #include <StaticConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form2 = GUICreate("BSP", 420, 350, 504, 318)
    $Pic1 = GUICtrlCreatePic("", 0, 0, 420, 350)
    _ResourceSetImageToCtrl($Pic1, "IMG_01", $RT_BITMAP)
    $Button1 = GUICtrlCreateButton("Weiter", 96, 248, 209, 41, 0)
    GUICtrlSetFont(-1, 20, 400, 0, "BIRTH OF A HERO")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]


    ich hab jetzt in Zeile 2 noch hinzugefügt , bitmap, IMG_01
    und es klappt immer noch nicht >.>

    Lg
    Rhisis

  • Diese Direktiven für den Wrapper funktionieren nicht mehr, soweit ich weiß.

    Nimm die alten (neuen) Direktiven !

    [autoit]

    #AutoIt3Wrapper_useupx=n
    #AutoIt3Wrapper_run_after=ResHacker.exe -add %out%, %out%, img.bmp, bitmap, IMG_01, 0
    #AutoIt3Wrapper_run_after=upx.exe --best --compress-resources=0 "%out%"

    [/autoit]


    Gruß


  • okay x]
    aber D:
    es funktioniert immer noch nicht >.>
    diesmal gibts aber einen Error ö.ö

    >Running:ResHacker.exe -add C:\Users\Chrissi\Desktop\Neuer Ordner (2)\Setup.exe, C:\Users\Chrissi\Desktop\Neuer Ordner (2)\Setup.exe, img.bmp, bitmap, IMG_01, 0
    Der Befehl "ResHacker.exe" ist entweder falsch geschrieben oder
    konnte nicht gefunden werden.
    >ResHacker.exe -add C:\Users\Chrissi\Desktop\Neuer Ordner (2)\Setup.exe, C:\Users\Chrissi\Desktop\Neuer Ordner (2)\Setup.exe, img.bmp, bitmap, IMG_01, 0 Ended rc:1
    >Running:upx.exe --best --compress-resources=0 "C:\Users\Chrissi\Desktop\Neuer Ordner (2)\Setup.exe"
    Der Befehl "upx.exe" ist entweder falsch geschrieben oder
    konnte nicht gefunden werden.
    >upx.exe --best --compress-resources=0 "C:\Users\Chrissi\Desktop\Neuer Ordner (2)\Setup.exe" Ended rc:1

    hm liegts vllt daran ...
    aber weshalb wird das als befehl implementiert o.o?

    lg
    Accarin

  • uhm nein,
    hatte aber alles runtergeladen Q.Q
    ResHacker hatt ich zwar manuell hinzugefügt D:
    kommt aber trotzdem der 'Error'

    Lg
    Accarin

  • Du brauchst nur das erste Paket SciTE4AutoIt3.exe, aber nu is egal ... ;)

    Hast Du etwa alle Tool einzeln heruntergeladen, und wenn ja, wo liegen diese ?
    Entferne sie wieder und führe SciTE4AutoIt3.exe aus um alles zu installieren !

    Deine Verzeichnisstruktur sollte dann etwa so aussehen:
    SSRSource.zip
    EDIT:
    Sorry, UPX liegt in C:\Programme\AutoIt3\Aut2Exe ...


  • hm k :3
    ich hab nur die Installationsdatei ausgeführt keine sorge XD
    Ach und nochmal großes Thanks, dass du mir hilfst *-*

    Edit:
    k jetzt hat er die beiden exe dateien...
    trotzdem kein bild, langsam glaub ichs nicht mehr o,o'

    Hoffe auf Hilfe q.q

    Lg
    Accarin

    2 Mal editiert, zuletzt von Accarin (31. Dezember 2008 um 03:25)

  • #AutoIt3Wrapper_Run_After="C:\Program Files\AutoIt3\Aut2Exe\upx.exe" --best "%out%"

    >Running:"C:\Program Files\AutoIt3\Aut2Exe\upx.exe" --best "C:\Users\Chrissi\Desktop\das problem\Setup.exe"
    Der Befehl "C:\Program" ist entweder falsch geschrieben oder
    konnte nicht gefunden werden.

    nur das könnte man eventuell als Error Meldung auffassen >.>
    es funktioniert immer noch nicht, obwohl das bild, der Größe der EXE Datei nach, schon eingefügt wurde...

    Edit:
    Es ist drin, hab mit ResHacker nachgeschaut,
    aber nur unter RCDATA..
    wenn ich nicht die Option "upx" wähle sieht man das Bild im ResHacker...
    Also ist es erfolgreich archiviert, nur die Aufruffunktion muss falsch sein

    [autoit]


    $Pic1 = GUICtrlCreatePic("", 0, 0, 420, 350)
    _ResourceSetImageToCtrl($Pic1, "IMG_01", $RT_BITMAP)

    [/autoit]

    Lg
    Accarin
    Lg
    Accarin

    Einmal editiert, zuletzt von Accarin (31. Dezember 2008 um 03:37)