GUI lahmt :(

  • guten abend ;)

    heute habe ich ein problem mit meiner GUI.
    diese reagiert sehr träge und ich dachte, dass ich es damit lösen könnte:

    [autoit]

    AutoItSetOption("GUIOnEventMode",1)
    GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "_check_GUI_Buttons")

    [/autoit]

    das ist der code:

    [autoit]


    Func _check_GUI_Buttons()
    $aMsg = GUIGetMsg(1)
    $msg = $aMsg[0]
    if $msg = $GUI_EVENT_CLOSE Or $Msg = $exititem Then
    if $aMsg[1] = $Form3 Then
    WinSetOnTop($Form3,"",0)
    $realyclose = MsgBox(1,"Question","Really close ?")
    if $realyclose = 1 Then
    _delete_loader_GUI()
    $Closed_GUI_by_Manual = 1
    EndIf
    EndIf
    if $aMsg[1] = $SettingsGui Then
    GUIDelete($SettingsGui)
    $SettingsGui = ""
    EndIf
    if $aMsg[1] = $Form5 Then
    GUIDelete($Form5)
    $Form5 = ""
    EndIf
    if $aMsg[1] = $h8Gui Then
    GUIDelete($h8Gui)
    $h8Gui = ""
    EndIf
    endif
    if $aMsg[0] <> "" And $aMsg[0] = $PID_GUI Then _enterPID()
    if $aMsg[0] <> "" And $aMsg[0] = $enterregistersite Then ShellExecute("http://wwww.n4cer.de/?reg=" & $number)
    if $aMsg[0] <> "" And $aMsg[0] = $request_PID_button Then _get_PID_from_PW()
    ;traymenu
    if $aMsg[0] <> "" And $aMsg[0] = $rescanitem Then
    _clearApplicationIniArrayEditor()
    _clearInformationIniToArrayEditor()
    $Closed_GUI_by_Manual = 0
    $Timer1 = 9
    _delete_loader_GUI()
    EndIf
    if $aMsg[0] <> "" And $aMsg[0] = $messagesitem Then
    ShellExecute("http://wwww.n4cer.de/inbox")
    EndIf
    if $aMsg[0] <> "" And $aMsg[0] = $settingsitem Then _Settings()
    if $aMsg[0] <> "" And $aMsg[0] = $friendsitem Then _create_friendsonline_gui()
    if $aMsg[0] <> "" And $aMsg[0] = $aboutitem Then Msgbox(64,"About","blabla .....")
    if $aMsg[0] <> "" And $aMsg[0] = $exititem Then Exit
    EndFunc

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

    vorher hab ich _check_GUI_Buttons() immer in einer schleife abgefragt, die abfragen hab ich noch nicht
    entfernt. - kann es daran liegen ? jetzt reagiert die gui nämlich gar nicht mehr :(

    • Offizieller Beitrag

    jetzt reagiert die gui nämlich gar nicht mehr


    Du mußt dich schon entscheiden: GuiOnEvent- oder GuiMsg-Mode. ;)
    Und falls du den Msg-Mode nutzen willst, hat diese Schleife nichts in einer Funktion zu suchen (Ausnahme: Das gesamte Skript wird als Funktion aufgerufen). Du solltest dir mal ein paar Skripte in der Hilfe oder im Forum anschauen, damit du verstehst, wie man GUIs sinnvoll skriptet.

  • Hi,

    die Abfragen "if $aMsg[0] <> """ machen keinen Sinn, denn $aMsg[0] enthält einen Integer und keinen String.

    Probiere es mal so ...

    Spoiler anzeigen
    [autoit]

    Func _check_GUI_Buttons()
    $aMsg = GUIGetMsg(1)
    $msg = $aMsg[0]

    Switch ($msg)
    Case $PID_GUI
    _enterPID()
    Case $enterregistersite
    ShellExecute("http://wwww.n4cer.de/?reg=" & $number)
    Case $request_PID_button
    _get_PID_from_PW()
    ;traymenu
    Case $rescanitem
    _clearApplicationIniArrayEditor()
    _clearInformationIniToArrayEditor()
    $Closed_GUI_by_Manual = 0
    $Timer1 = 9
    _delete_loader_GUI()
    Case $messagesitem
    ShellExecute("http://wwww.n4cer.de/inbox")
    Case $settingsitem
    _Settings()
    Case $friendsitem
    _create_friendsonline_gui()
    Case $aboutitem
    Msgbox(64,"About","blabla .....")
    Case $GUI_EVENT_CLOSE
    ContinueCase
    Case $exititem
    if $aMsg[1] = $Form3 Then
    WinSetOnTop($Form3,"",0)
    $realyclose = MsgBox(1,"Question","Really close ?")
    if $realyclose = 1 Then
    _delete_loader_GUI()
    $Closed_GUI_by_Manual = 1
    EndIf
    EndIf
    if $aMsg[1] = $SettingsGui Then
    GUIDelete($SettingsGui)
    $SettingsGui = ""
    EndIf
    if $aMsg[1] = $Form5 Then
    GUIDelete($Form5)
    $Form5 = ""
    EndIf
    if $aMsg[1] = $h8Gui Then
    GUIDelete($h8Gui)
    $h8Gui = ""
    EndIf
    Exit
    EndSwitch
    EndFunc

    [/autoit]

    Gruß
    Greenhorn