HELP GUI Funktionen zuweisen...2. button=abbrechen verliert nach 1. button=Start funktion

  • leute... nur weil da bot steht antwortet mir niemand? :(
    das ist kein game bot oder sonst was, ich habe auch nicht vor das zu benutzen.. ich möchte doch nur das meine GUI funktioniert, weil ich den umgamg mit GUIs lernen will, dazu möchte ich eben diesen afk bot machen, damit wenn ich afk gehe.. und anschrieben werde.. der bot dann sowas schreibt wie "ich bin gerade eine Rauchen, bin in 10 minuten wieder da" und dazu möchte ich machen das die 10 minuten automatisch runterzählen... aber das bekomme ich hin...
    das problem ist nur, das in der Gui wie schon gesagt der button2 nicht geht, wenn der button1 gedrückt wurde -.-
    was kann ich machen, oder was ist falsch, kann ich das vllt komplett anders struckturieren mit den funktionen der buttons? vllt besser?
    hilft mir doch, ich will garnichts böses, wenn ich das wollte würde ich in einem anderen forum fragen.

  • [autoit]


    While 1
    Dim $pixl=PixelSearch ( 25, 260, 133, 301, 0xDD5404, 10,0)
    If not @error Then
    sleep (1000)
    MouseClick("left",30,355) ; auf das eingabefeld wo ich was geschrieben haben möchte
    Sleep (1000)
    send(GuiCtrlRead ($input1)) ; $input ist meine inputbox..
    sleep (100)
    Send ("{ENTER}") ; Abschicken
    EndIf
    WEnd

    [/autoit]


    Weil diese Schleife nicht mehr verlassen wird. 8o

  • oh gott xD
    was denn genau hab ich vergessen? Exitloop?

    was denn sag bitte^^

  • genau richtig!

    das script soll solange checken ob die farbe auf den coords zu finden ist.. und wenn sie es ist den text schreiben, bis ich wieder da bin und in meinem gui auf exit drücke, ich könnte es ja mit hotkeys machen, aber dann hab ich keine funktionierende GUI^^ das ist ja das was ich will, das script ist nur zum nebeneffekt

    Einmal editiert, zuletzt von Executor87 (28. Mai 2009 um 16:49)

  • Ich glaube das geht nur über GUIRegisterMsg()

    Versuchs mal das hier einzubauen (s. Kommentar im Skript):

    [autoit]


    #include <WindowsConstants.au3>
    ;<WindowsConstants.au3> wird für _ClickonButton() gebraucht

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

    GUIRegisterMsg($WM_NOTIFY, "_ClickonButton") ;vor die Schleife der Gui setzen

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

    ;
    ;

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

    Func _ClickonButton($hWnd, $Msg, $wParam, $lParam)
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3)
    If $wParam = $btnHid2 and $event = $NM_CLICK Then ;$btnHid2 = dein Exit button?
    Ende() ;deine Exit Funktion?f
    EndIf
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc

    [/autoit]

    Ansonsten mal bitte das ganze Skript posten damit man rumprobieren kann.

  • probier ich sofort, muss aber jetzt zum haare schneiden...

    werd mich dann drann setzen, und probieren.

  • achja.. klappt so nicht.. weil ich durch den aufbau der GUI $POPUP und so konnte ich keine funktionierenden buttons machen.. deshalb habe ich transparente labels gemacht, auf die ich klicke und als buttons genommen werden musste, die buttons dann auf ein bild malen, das klappt auch mit den labels..eben nach dem starten des ersten buttons will der andere nicht mehr abbrechen bzw stopen

  • hier^^ :

    [autoit]

    #include <GUIConstants.au3>

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

    $Form1 = GUICreate("ICQ Away Tool", 451, 346, 238, 121,0x80000000)
    GUISetFont(8, 400, 0, "Comic Sans MS")
    GUISetBkColor(0xFFFFFF)
    $Pic1 = GUICtrlCreatePic("icqneww.jpg",0,0, 451, 346, -1,$GUI_WS_EX_PARENTDRAG)
    $Label1 = GUICtrlCreateLabel("Wichtig! ICQ Fenster muss Links oben in der Ecke platziert sein.", 24, 96, 335, 19)
    GUICtrlSetBkColor(-1, 0xF2FEEC)
    $Input1 = GUICtrlCreateInput("Hier Nachricht eingeben", 32, 120, 281, 23)
    GUICtrlSetBkColor(-1, 0xF2FEEC)
    GUICtrlSetCursor (-1, 5)
    $btnHid1 = GUICtrlCreateLabel('', 32, 168, 71, 34)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT )
    GUICtrlSetState(-1, $GUI_ONTOP)
    $btnHid2 = GUICtrlCreateLabel('', 120, 165, 71, 34)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT )
    GUICtrlSetState(-1, $GUI_ONTOP)

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

    GUISetState()

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

    While 1

    $nMsg = GUIGetMsg()

    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnHid1
    Start ()
    Case $btnHid2
    Ende ()
    Endswitch

    WEnd
    Func Start ()
    If TrayTip ("","Bot gestartet",3000) Then
    Sleep (1000)
    If WinWait("FENSTERNAME") Then
    Sleep (500)
    IF WinActivate ( "FENSTERNAME") Then
    Sleep (1300)
    WinMove("FENSTERNAME", "", 0, 0)
    Sleep (3000)
    EndIf
    EndIf
    EndIf
    While 1
    Dim $pixl=PixelSearch ( 25, 260, 133, 301, 0xDD5404, 10,0)
    If not @error Then
    sleep (1000)
    MouseClick("left",30,355)
    Sleep (1000)
    send(GuiCtrlRead ($input1))
    sleep (100)
    Send ("{ENTER}")
    EndIf
    WEnd
    EndFunc

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

    Func Ende ()
    Exit
    EndFunc

    [/autoit]
  • Ok hast recht, die Funktion oben geht echt nicht. Ist für ein Listview, keine Ahnung was da schief läuft (und was lernen wir daraus? nicht in Funktionen rumschmieren die man nicht versteht :( )

    Neuer Versuch:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    $Form1 = GUICreate("ICQ Away Tool", 451, 346, 238, 121,0x80000000)
    GUISetFont(8, 400, 0, "Comic Sans MS")
    GUISetBkColor(0xFFFFFF)
    $Pic1 = GUICtrlCreatePic("icqneww.jpg",0,0, 451, 346, -1,$GUI_WS_EX_PARENTDRAG)
    $Label1 = GUICtrlCreateLabel("Wichtig! ICQ Fenster muss Links oben in der Ecke platziert sein.", 24, 96, 335, 19)
    GUICtrlSetBkColor(-1, 0xF2FEEC)
    $Input1 = GUICtrlCreateInput("Hier Nachricht eingeben", 32, 120, 281, 23)
    GUICtrlSetBkColor(-1, 0xF2FEEC)
    GUICtrlSetCursor (-1, 5)
    $btnHid1 = GUICtrlCreateLabel('Start', 32, 168, 71, 34)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT )
    GUICtrlSetState(-1, $GUI_ONTOP)
    $btnHid2 = GUICtrlCreateLabel('Exit', 120, 165, 71, 34)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT )
    GUICtrlSetState(-1, $GUI_ONTOP)

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

    GUISetState()
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

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

    While 1

    $nMsg = GUIGetMsg()

    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnHid1
    Start ()
    Case $btnHid2
    Ende ()
    Endswitch

    WEnd
    Func Start ()
    If TrayTip ("","Bot gestartet",3000) Then
    Sleep (1000)
    If WinWait("FENSTERNAME") Then
    Sleep (500)
    IF WinActivate ( "FENSTERNAME") Then
    Sleep (1300)
    WinMove("FENSTERNAME", "", 0, 0)
    Sleep (3000)
    EndIf
    EndIf
    EndIf
    While 1
    Dim $pixl=PixelSearch ( 25, 260, 133, 301, 0xDD5404, 10,0)
    If not @error Then
    sleep (1000)
    MouseClick("left",30,355)
    Sleep (1000)
    send(GuiCtrlRead ($input1))
    sleep (100)
    Send ("{ENTER}")
    EndIf
    WEnd
    EndFunc

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

    Func Ende ()
    Exit
    EndFunc

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
    If Not IsHWnd($btnHid2) Then $hWndLabel = GUICtrlGetHandle($btnHid2)
    $hWndFrom = $ilParam
    Switch $hWndFrom
    Case $btnHid2, $hWndLabel
    Ende()
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND (Bugfix - http://www.autoit.de)

    [/autoit]

    @all
    Die oben vorgeschlagene Funktion stammt hier aus dem Forum (ka von wem)und lautet im Orignal

    [autoit]


    Func _DoubleClickOnListView($hWnd, $Msg, $wParam, $lParam);Die Eigentliche Funktion
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3); Checkt wie das EVENT aussieht
    If $wParam = $hListView Then;Wenn der Klick auf das ListView ging..
    If $event = $N_DBLCLK Then;.. Wenn es ein DoppelKlick war
    ;die jeweilige Funktion
    EndIf
    EndIf
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc ;==>_DoubleClickOnListView

    [/autoit]

    Wie kann man diese Funktion für andere Gui-Elemente umbauen?
    Ich verstehe die Dll- Sachen leider noch nicht :thumbdown:

  • das klappt super :)

    vielen dank für die hilfe

    achja.. mit bild sieht das ganze natürlich netter aus..
    das ganze ist noch nicht fertig.. feinheiten.. und kleine spielereien kommen natürlich noch rein :)

    ich warte auf inspirationen :D brauch halt noch ein paar ideen^^