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

  • Das erste ist deine Scriptzeile ?

    Belasse sie so wie oben, ohne Pfadangabe. Das liegt an dem Leerzeichen in den Pfaden. ;)

    Also einfach so:

    [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]


    Du kannst mit ResHacker nachsehen, ob deine Bitmap zu den Ressourcen hinzugefügt wurde, dann musst Du Zeile 3 aber weglassen. ;)


    Gruß
    Greenhorn


  • [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #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%"
    #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)

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

    $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]

    so funktioniert es nicht ...
    auch nicht wenn ich das Bild über ResourceGet und dann mit _SetBitmapToCtrl versuche einzufügen...

    nja bin schlafen >.>

    Lg
    Accarin

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

  • OK, habe den Fehler gefunden ...

    Es lag doch an der Pfadangabe, früher hat es auch so funktioniert ... :rolleyes:
    Wenn Du UPX benutzen möchtest, dann würde ich es der Einfachheit halber zusätzlich in das AutoIt3Wrapper Verzeichnis kopieren, dann kannst Du die gleiche Pfadvariable nutzen wie für ResHacker.

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=sample.exe
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Run_After=%scitedir%\AutoIt3Wrapper\ResHacker.exe -add %out%, %out%, img.bmp, bitmap, IMG_01, 0
    ;#AutoIt3Wrapper_Run_After=%scitedir%\AutoIt3Wrapper\upx.exe --best --compress-resources|0 "%out%"
    #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", 290, 180, 504, 318)
    $Pic1 = GUICtrlCreatePic("", 0, 0, 290, 180)
    _ResourceSetImageToCtrl($Pic1, "IMG_01", $RT_BITMAP)

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

    $Button1 = GUICtrlCreateButton("Weiter", 96, 248, 209, 41, 0)
    GUICtrlSetState (-1, $GUI_ONTOP) ; Wichtig für alle Steuerelemente, die "über" der Bitmap liegen !
    ;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]


    ScreenSaverRotator.zip


    LG
    Greenhorn


    2 Mal editiert, zuletzt von Greenhorn (31. Dezember 2008 um 04:42)

  • du hättest die bilder auch jeden scriptstart mit

    [autoit]


    FileInstall("IMG_01.bmp", @TempDir & "\IMG_01.bmp", 0)
    ;und so weiter mit allen Dateien die du brauchst

    [/autoit]


    installieren können

    Und dann halt ganz normal weiterverwenden, musst halt immer als Pfad @TempDir & "\[datei]" angeben
    vielleicht kann man das auch als variable verpacken musst halt schaun ob sich des rentiert

    Padmak

    Einmal editiert, zuletzt von Padmak (31. Dezember 2008 um 11:50)

  • ich hätte es lieber, wenn die bilder direkt in der EXE eingebunden wäre ;)

    ähm und irgendwie klappt es bei mir immer noch nicht o.o'
    mit deinem Code wird bei mir jetzt nichtmal mehr was eingebunden.

    Ich werd da nicht schlau draus x.X

    Lg
    Accarin

  • wenn du es compilest dann ist das in die exe eingebunden ;)
    mit welchem code wird nix eingebunden?
    mit meinem?
    Die dateien müssen natürlich direkt im Verzeichnis des Scriptes sein^^

    Padmak

  • mit Greenhorns Code..
    hab natürlich meine Größen so gelassen, wie sie sind.
    Die dateien sind alle in dem selben Ordner.

    Und nach der Dokumentation packt doch fileinstall, sobald die EXE verwendet wird das bild an einen Speicherort von dem es dann aus verwendet wird.
    Ich möchte aber, dass die Grafik direkt aus der EXE geladen wird.

    Lg
    Accarin

  • das macht so gut wie keinen unterschied^^

    Zitat

    Und nach der Dokumentation packt doch fileinstall, sobald die EXE verwendet wird das bild an einen Speicherort von dem es dann aus verwendet wird.

    Ja genau
    was ist dagegen einzusetzen?
    man spart sogar größe weil man nicht extra eine UDF mitschleppen muss
    ich nimm fileinstall gerne her es ist einfach ne saubere lösung

    Padmak

  • ich möchte halt nicht, dass der Benutzer die Grafiken in einem Ordner sieht D:
    die sollen halt in der EXE verankert sein und von dort geladen werden..

    Fänd ich halt besser,
    und irgendwie muss das ya funktionieren >.>

    Edit 3:
    so habs jetzt mit FileInstall gemacht, funktioniert auch prima soweit...
    bloß wird das bild aus irgendeinem Grund nicht auf dem vollen GUI Fenster angezeigt, rechts ist eine Lücke und das Bild wirkt jetzt auch zusammengepresst:
    Hier der Code

    Edit gelöst:
    Bildparameter Länge u. Breite vertauscht x)

    [autoit]

    FileInstall("img.bmp", @TempDir & "\IMG_01.bmp",0)

    [/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, 0, 0)
    $Pic1 = GUICtrlCreatePic(@TempDir & "\IMG_01.bmp", 0, 0, 350, 420)

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

    $Button1 = GUICtrlCreateButton("Weiter", 96, 248, 209, 41, 0)
    GUICtrlSetState (-1, $GUI_ONTOP) ; Wichtig für alle Steuerelemente, die "über" der Bitmap liegen !
    ;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]

    Problem no2:
    Der Button wird erst angezeigt, wenn man mit der Maus über die Stelle hinüberfährt, wo er sich befindet...
    (ist zwar nur ein schönheitsfehler aber..)

    und noch eine weitere Frage:
    ist es möglich die elemente oben am Fenster (das 'x' und das minimieren/maximieren Feld) zu verstecken, sodass man praktisch nur das Bild mit Button sieht?

    Lg
    Accarin

    Lg
    Accarin

    5 Mal editiert, zuletzt von Accarin (31. Dezember 2008 um 13:40)

  • Zitat

    Edit gelöst:

    Bildparameter Länge u. Breite vertauscht x)

    oh ja des kenn ich :D

    x und so weiter verstecken:

    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("Form1", 633, 447, 193, 125, BitOR($WS_MINIMIZEBOX,$WS_SYSMENU,$WS_DLGFRAME,$WS_POPUP,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)

    [/autoit]

    Guten Rutsch an alle, Padmak

  • So vielen Dank erstmal an Euch beide und ebenfalls frohes Neues >:3
    Hab jetzt soweit erstmal alles geregelt, es funktioniert auch (zumindest momentan noch xD) perfekt.
    Nur mit dem Button ist das etwas komisch.

    PS: Thx PRO4
    Lg
    Accarin

  • Moin,

    habe festgestellt, in der 3.3er Version bewirkt die Anweisung

    [autoit]

    GUICtrlSetState (-1, $GUI_ONTOP)

    [/autoit]


    genau das Gegenteil !
    Bug ???

    Naja, egal. Entferne die Zeile und es funzt ! ;)


    Gruß
    Greenhorn


  • hm...
    wegmachen ist nicht gut...
    wenn ich die Zeile wegmache, kann der Button nicht mehr gedrückt werdne :x

    Edit:
    Da das Fenster nur für Credits war,
    habe ich jetzt einfach den Button rausgenommen und einen sleep von 2000 eingestellt, dann wird das Fenster automatisch gewechselt ;)
    gefällt mir auch besser so :3

    Lg
    Accarin