Programm in GUI beenden (ohne diese zu schließen)

  • nabend,

    also, ich habe eine GUI erstellt, wo man ein koordinatentool öffnen kann. leider jedoch weiß ich nicht, wie ich es beenden kann.
    über den button koordinaten tool beenden soll man es schließen können, aber die GUI soll dabei offen bleiben.

    also, ich drücke koordinatentool. dann öffnet sich dieses "programm". schließen soll man es über koordinatentool beenden. da weiß ich jetzt leider nur nicht weiter.
    ist das tool geöffnet, läßt sich die gui auch nicht mehr durch den beenden button schließen. da weiß ich dann auch nicht mehr weiter, also warum das so ist.
    drücke ich esc, schließt alles, so soll es aber auch nicht sein.

    ich weiß, ich drück mich umständlich aus, aber vielleicht versteht ja jmd was ich meine.


    #include <GUIConstants.au3>
    HotKeySet("{ESC}", "Terminate")


    $Script_Dir = @ScriptDir

    $Form1 = GUICreate("", 625, 300, 300, 193, 125)

    $Label1 = GUICtrlCreateLabel("X - Werte", 8, 8, 68, 17)
    $Label2 = GUICtrlCreateLabel("Y - Werte", 88, 8, 68, 25)
    $Label4 = GUICtrlCreateLabel("Koordinaten 1", 170, 48, 100, 17)


    $Wert1_Input1 = GUICtrlCreateInput("", 8, 48, 65, 21)
    $Wert2_Input2 = GUICtrlCreateInput("", 88, 48, 65, 21)


    $Koordinatentool = GUICtrlCreateButton("Koordinatentool", 470, 48, 130, 25, 0)
    $Koordinatentool_beenden = GUICtrlCreateButton("Koordinatentool beenden", 470, 88, 130, 25, 0)
    $Beenden = GUICtrlCreateButton("Beenden", 470, 208, 130, 25, 0)

    GUISetState(@SW_SHOW)


    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Koordinatentool
    Koordinatentool ()
    Case $Beenden
    Terminate ()
    EndSwitch
    WEnd


    Func Koordinatentool()
    MsgBox(0, "Hilfe", "Übertrage die Koordinaten in die Input Felder." _
    & @CRLF & "Links = X-Werte" _
    & @CRLF & "Rechts = Y-Werte")

    While 1
    $pos = MouseGetPos()
    ToolTip($pos[0] & ", " & $pos[1], 0, 0)
    Sleep(20)
    WEnd

    EndFunc


    Func Terminate()
    Exit
    EndFunc

  • ich würds so lösen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    HotKeySet("{ESC}", "Terminate")

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

    $Script_Dir = @ScriptDir

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

    $Form1 = GUICreate("", 625, 300, 300, 193, 125)

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

    $Label1 = GUICtrlCreateLabel("X - Werte", 8, 8, 68, 17)
    $Label2 = GUICtrlCreateLabel("Y - Werte", 88, 8, 68, 25)
    $Label4 = GUICtrlCreateLabel("Koordinaten 1", 170, 48, 100, 17)

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

    $Wert1_Input1 = GUICtrlCreateInput("", 8, 48, 65, 21)
    $Wert2_Input2 = GUICtrlCreateInput("", 88, 48, 65, 21)

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

    $Koordinatentool = GUICtrlCreateButton("Koordinatentool", 470, 48, 130, 25, 0)
    $Koordinatentool_beenden = GUICtrlCreateButton("Koordinatentool beenden", 470, 88, 130, 25, 0)
    $Beenden = GUICtrlCreateButton("Beenden", 470, 208, 130, 25, 0)

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Koordinatentool
    Koordinatentool()
    Case $Koordinatentool_beenden
    AdlibUnRegister("Mauspos")
    Tooltip("")
    Case $Beenden
    Terminate()
    EndSwitch
    WEnd

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

    Func Koordinatentool()
    MsgBox(0, "Hilfe", "Übertrage die Koordinaten in die Input Felder." _
    & @CRLF & "Links = X-Werte" _
    & @CRLF & "Rechts = Y-Werte")
    AdlibRegister("Mauspos", 20)
    EndFunc ;==>Koordinatentool

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

    Func Mauspos()
    $pos = MouseGetPos()
    ToolTip($pos[0] & ", " & $pos[1], 0, 0)
    Endfunc

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

    Func Terminate()
    Exit
    EndFunc ;==>Terminate

    [/autoit]
  • huhu,
    erstmal danke für deine antwort, jedoch versteh ich zwar was du meinst, aber funktionieren tut es nicht. zumindest bei mir :(

    er sagt mir immer:

    ERROR: AdlibUnRegister(): undefined function.
    AdlibUnRegister("Mauspos")


    und da keine schleife mehr vorhanden ist, zeigt er nur noch eine mausposition an

    ich probier einfach mal weiter, falls jmd noch ne möglichkeit wüsste bzw weiß, wie ich den fehler beheben könnte, wär ich sehr dankbar.

    grüße

  • du hast ne alte version von autoit. da gabs AdlibRegister und AdlibUnRegister noch nicht

    entweder updaten oder durch Adlibenable ersetzten.
    updaten is aber sinnvoller ;)

  • habs durch enable ersetzt, geht auch kurzzeitig aus, danach erscheint das tool aber wieder......update es die tage