FileInstall - Ausgabe erst nach Klick

  • Hi,

    ich möchte mit FileInstall den SourceCode mitgeben und erst nach einem Klick freigeben (siehe Bsp.). Hierfür ist ein zweifacher Aufruf von FileInstall nötig und löschen der ersten Ausgabe(1.includen, 2.löschen, 3.ausgeben).

    Gibt es bessere Möglichkeiten, oder vielleicht ganz Andere ? ?(

    Spoiler anzeigen
    [autoit]


    #include<GUIConstantsEx.au3>

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

    FileInstall("Neu AutoIt v3 Script.au3", @ScriptDir & "\")
    FileDelete(@ScriptDir & "\Neu AutoIt v3 Script.au3")

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

    #Region ### START Koda GUI section ###
    $Form2 = GUICreate("RR04 - Test mit FileInstall", 316, 238, 347, 263)
    $Button1 = GUICtrlCreateButton("&Source", 65, 203, 75, 25, 0)
    $Button2 = GUICtrlCreateButton("&Cancel", 162, 203, 75, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Select
    Case $nMsg = $GUI_EVENT_CLOSE Or $nMsg = $Button2
    Exit
    Case $nMsg = $Button1
    FileInstall("Neu AutoIt v3 Script.au3", @ScriptDir & "\")
    EndSelect
    WEnd

    [/autoit]


    Danke

  • Einfach so:

    [autoit]

    $button = GUICtrlCreateButton("Script installieren", 5,5,100)
    GUICtrlSetOnEvent($button, "_install")
    Func _install()
    FileInstall("deinscript", "dir", 1) ;Wenn die Datei schon existiert wird sie überschrieben
    EndFunc
    ;Beziehungsweise mit GUIGetMsg()
    While 1
    Select
    Case GUIGetMsg() = $button
    _install()
    EndSelect
    WEnd

    [/autoit]


    Da fehlen jetzt natürlich ein paar sachen aber so funktioniert es ;)

    Du brauchst das FileInstall am anfang nicht, die Datei wird trotzdem in die exe mit eingebaut aber halt erst ausgegeben wenn der Button gedrückt wurde ;)

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Danke FireFlyer,

    hat super funktioniert. Bei mir sieht es jetzt so aus:

    Spoiler anzeigen
    [autoit]


    ; by FireFlyer
    #include<GUIConstantsEx.au3>

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

    #Region ### START Koda GUI section ###
    $Form = GUICreate("Test - FileInstall by FireFlyer", 251, 100, -1, -1)
    $ButtonOk = GUICtrlCreateButton("&Source", 86, 64, 75, 23, 0)
    $ButtonCancel = GUICtrlCreateButton("&Cancel", 167, 64, 75, 23, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Select
    Case $nMsg = $GUI_EVENT_CLOSE Or $nMsg = $ButtonCancel
    Exit
    Case $nMsg = $ButtonOk
    _install()
    Exit
    EndSelect
    WEnd

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

    Func _install()
    FileInstall("Neu AutoIt v3 Script_4.au3", @ScriptDir & "\") ; "1" Wenn die Datei schon existiert wird sie überschrieben
    EndFunc ;==>_install

    [/autoit]
  • Ich würde dir jedoch raten wenn du dich weiterhin mit GUIs in AutoIt beschäftigst dir den GUIOnEventModus anzuschauen, denn so wie es jetzt bei dir ist wird quasi mehrmals pro sekunde abgefragt ob ein bestimmter Button gedrückt ist oder nicht. Beim OnEventModus muss das nicht sein, d.h. gerade bei sehr großen/komplexen oder auch mehreren GUIs wird das Programm dann sehr schnell ausgebremst. Hier mal ein kleines beispiel:

    [autoit]

    #include <GUIConstants.au3>
    Opt("GUIOnEventMode", 1) ;Muss 1 sein da sonst der GUIOnEventMode nicht funktioniert
    GUICreate("On Event Mode", 200, 50)
    $button = GUICtrlCreateButton("test", 75, 15, 50, 20)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_exit") ;Achtung: GUISetState bei den Constants
    GUICTRLSetOnEvent($button, "_test") ;und guiCTRLsetonevent bei Buttons und dergleichen
    GUISetState()
    While 1
    WEnd

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

    Func _exit()
    Exit
    EndFunc
    Func _test()
    MsgBox(0, "Test", "Test")
    EndFunc

    [/autoit]

    Der einzige "Nachteil" bei der OnEvent sache ist: Dass du quasi für jede "ausführung" eine Funktion schreiben musst ;)

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D