Autoit hintergrundarbeit + radiobuttons

  • Ich bin neu und blicke noch nicht so ganz durch :D . Ich habe 2 Fragen.
    1. Geht es, dass der Script im Hintergrund arbeitet, z.B. dass er in einem Programm Tasten "drückt", man aber in der zwischen zeit was anderes machen kann?
    2. Bei den Radiobuttons blicke ich auch noch nicht ganz durch. Ich möchte das im Folgenden Script

    [autoit]

    #include <ButtonConstants.au3>#include <GUIConstantsEx.au3>#include <WindowsConstants.au3>Opt("GUIOnEventMode", 1)Global $gInfiniteLoop = false#Region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\****\Desktop\Form1.kxf$Form1 = GUICreate("Fenster", 500, 180, 300, 300)GUISetIcon("C:\ahuqe.jpg")GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize")GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1Maximize")GUISetOnEvent($GUI_EVENT_RESTORE, "Form1Restore")$Button1 = GUICtrlCreateButton("Start", 10, 66, 235, 72, 0)GUICtrlSetFont(-1, 30, 400, 0, "Arial Black")GUICtrlSetOnEvent(-1, "StartClick")$Button2 = GUICtrlCreateButton("Stop", 255, 66, 235, 72, 0)GUICtrlSetFont(-1, 30, 400, 0, "Arial Black")GUICtrlSetOnEvent(-1, "StopClick")$Button3 = GUICtrlCreateButton("Exit", 10, 144, 480, 31, 0)GUICtrlSetFont(-1, 10, 400, 0, "Arial Black")GUICtrlSetOnEvent(-1, "ExitClick")$Beschreibung = GUICtrlCreateLabel("Test test test.", 15, 11, 472, 17)$Beschreibung2 = GUICtrlCreateLabel("Test, test, 12@.", 15, 40, 472, 17)GUISetState(@SW_SHOW)#EndRegion ### END Koda GUI section ###While Sleep(10) If $gInfiniteLoop Then While $gInfiniteLoop Send ("{F11}") Send ("{F11}") Send ("{ENTER}") Sleep (100) WEnd EndIfWEndFunc StartClick() $gInfiniteLoop = trueEndFuncFunc StopClick() $gInfiniteLoop = FalseEndFuncFunc ExitClick() ExitEndFuncFunc Form1Close() ExitEndFuncFunc Form1Maximize()EndFuncFunc Form1Minimize()EndFuncFunc Form1Restore()EndFunc

    [/autoit]


    Noch 2 Radiobuttons sind.
    Wenn radioButton 1 ausgewählt ist, soll beim druck auf "start" loop nr 1 gestartet und mit "stop" gestoppt werden.
    Wenn radioButton 2 ausgewählt ist, soll beim druck auf "start" loop nr 2 gestartet und mit "stop" gestoppt werden.

  • moin

    also mit dem autoit windowinfo ( ist im startmenü unter autoit ) kannst du die handle´s der buttons auslesen
    und mit ControlSend() kannst du einen tastendruck simulieren ( mehr in der hilfe datei)

    kannst du bitte dein script noch richtig gliedern so ist es unlessbar ;)

  • ich hab dein script mal verbessert (soweit ich das kann)
    du findest in der hilfe datei auch ein besipiel zu den radiobuttons
    wenn du buttons in java oder flash programmierten fenstern klicken wilst must du mal in der sufu gucken

    Spoiler anzeigen
    [autoit]

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

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

    Opt("GUIOnEventMode", 1)

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

    Global $gInfiniteLoop = false

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

    #Region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\****\Desktop\Form1.kxf
    $Form1_1 = GUICreate("Test", 500, 300, 192, 127)
    GUISetIcon("C:\test.jpg")
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize")
    GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1Maximize")
    GUISetOnEvent($GUI_EVENT_RESTORE, "Form1Restore")
    $Button1 = GUICtrlCreateButton("Start", 10, 194, 235, 72)
    GUICtrlSetFont(-1, 30, 400, 0, "Arial Black")
    GUICtrlSetOnEvent(-1, "StartClick")
    $Button2 = GUICtrlCreateButton("Stop", 255, 194, 235, 72)
    GUICtrlSetFont(-1, 30, 400, 0, "Arial Black")
    GUICtrlSetOnEvent(-1, "StopClick")
    $Button3 = GUICtrlCreateButton("Exit", 10, 144, 480, 31, 0)
    GUICtrlSetFont(-1, 10, 400, 0, "Arial Black")
    GUICtrlSetOnEvent(-1, "ExitClick")
    $Beschreibung = GUICtrlCreateLabel("test.", 15, 11, 472, 17)
    $Beschreibung2 = GUICtrlCreateLabel("test.", 15, 40, 472, 17)
    $Radio1 = GUICtrlCreateRadio("Loop 1", 48, 88, 113, 17) ;erstellt radio1
    $Radio2 = GUICtrlCreateRadio("Loop 2", 48, 120, 113, 17) ;erstellt Radio2
    GUICtrlSetState( $Radio1, $GUI_CHECKED) ;setzt radio1
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While Sleep(10)
    If $gInfiniteLoop Then ;wenn $gInfiniteLoop true dann...
    If GUICtrlRead( $Radio1 ) = $GUI_CHECKED Then ;wenn radio1 gesetzt ist dann...
    ;hier die loop1
    ;ControlClick ( "title", "text", controlID [, button [, clicks [, x [, y ]]]] ) ;einfach die control id einfügen solte schon reichen (funktioniert nur bei GUI´s )mehr in der hilfe datei
    ElseIf GUICtrlRead( $Radio2 ) = $GUI_CHECKED Then ;wenn radio2 gesetzt ist dann...
    ;hier die loop2
    EndIf
    EndIf
    WEnd

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

    Func StartClick()
    $gInfiniteLoop = true
    EndFunc

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

    Func StopClick()
    $gInfiniteLoop = False
    EndFunc

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

    Func ExitClick()
    Exit
    EndFunc

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

    Func Form1Close()
    Exit
    EndFunc

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

    Func Form1Maximize()
    EndFunc

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

    Func Form1Minimize()
    EndFunc

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

    Func Form1Restore()
    EndFunc

    [/autoit]

    mfg Bulli