Verschachtelte IF Funktion?

  • Hallo liebe Autoit'ler!

    Aktueller Stand:
    Ich habe eine Funktion, welche den Status eines Buttons(einer Instance) überprüft.

    Also bei Status null tue das, ansonsten Status 1 tue das...
    Allerdings kommt man momentan erst in diese Funktion, wenn Windows aktiv ist.(unten nochmal der gesamte Quellcode, habe ich leider nicht selber geschrieben)


    Gewünschte Veränderung:
    Ich möchte aber nun, dass ein zweiter Button überprüft wird, also:
    Wenn beide Buttons auf Status 1 dann tue das, ansonsten tue das.

    Kann ich eine verschachtelte IF-Funktion dafür verwenden? Wie wäre diese aufgebaut, habe noch keine Erfahrung damit. Oder wie kann man sagen, wenn der und der Button = 0, dann... ansonsten Prüfung wiederholen.


    Hintergrund:
    Es geht um eine Telefonanmeldesoftware, das jetzige Script sorgt dafür, dass erkannt wird, wenn der User nicht am Platz ist und dann logt sich die Software automatisch aus.
    Wenn man jedoch am Platz bleibt, aber nicht gestört werden möchte muss man seinen Status ändern, das ist momentan noch nicht möglich, es geht nur, 1.Ich bin da, 2. Ich bin nicht da.
    Es gibt also nicht die Möglichkeit sich auf "Beschäftigt" zu stellen, da momentan alle 2 Sekunden der "Bereit-Button" abgefragt wird.

    Gesamter Code:


    Vielen Dank schonmal! :)

    3 Mal editiert, zuletzt von Autoitit (11. März 2008 um 09:35)

  • Ich merke, schon, auf dich ist Verlass! Du postest zu jedem Thema etwas! :thumbup:

    Kannst du mir den Aufbau erläutern, oder ein Beispiel(code) geben?

    Wie könnte man sie umstellen?

    • Offizieller Beitrag

    HI,

    mit ControlClick überprüfst du doch nicht, sondern du klickst drauf. Willst du den Status dann schau die mal ControlCommand an.

    Die Überprüfung geht dann einfach Pseudo Code

    [autoit]

    If ControlCommand( ... "ischecked") and ControlCommand(... "ischecked") Then
    ...
    else
    ...
    Endif

    [/autoit]

    Mega

  • Kann/sollte man anstatt

    If ControlCommand( undefined... "ischecked") undefinedand ControlCommand(undefined... "ischecked") Then ...

    nicht eher

    If ControlCommand( undefined... "ischecked") or ControlCommand(undefined... "ischecked") Then ...

    nehmen? Weil es reicht ja, wenn einer aktiv ist, es können ja auch garnicht beide aktiv sein, nicht gleichzeitig.
    Was genau checkt er da eigentlich? Returns 1 if Button is checked, 0 otherwise steht als Funktion, kann mir aber nicht viel darunter vorstellen. :whistling:

    Ich habe leider noch eine Frage, ich stell sie mal direkt im Code:

    Code
    ;If ControlCommand( "ACD Agent - Nachtschicht 1", "Nachbearbeitung", 1035, "ischecked") and ControlCommand("ACD Agent - Nachtschicht 1", "&Bereit", 1033, "ischecked") Then 
    	;...FRAGE: wie kann ich ihm sagen, dass er es wiederholen soll, also die überprüfung
    	;else
    	;...FRAGE: und wie sage ich ihm hier, dass er dann zu der Funktion gehen soll, in der die Buttons zum anmelden geklickt werden
    	;Endif

    Einmal editiert, zuletzt von Autoitit (11. März 2008 um 11:40)

  • Wie kann man denn folgendes in eine Schleife legen?
    Und wie sagt man, "gehe zu line X"? ?(

    [autoit]

    #cs If ControlCommand( "ACD Agent - Nachtschicht 1", "Nachbearbeitung", 1035, "ischecked") or ControlCommand("ACD Agent - Nachtschicht 1", "&Bereit", 1033, "ischecked") Then

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

    else

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

    #ce

    [/autoit]
  • zur frage 1 im code:

    wie oft soll er das denn überprüfen? mehrere male oder nur einmal?

    Bei einmal einfach ein weiteres If . und wenn er es mehrere male machen soll,dann eben eine whileschleife.

    zu frage 2 im code:

    wenn er wieder zurück gehen soll, einfach den loop beenden und entweder mit hilfe einer while schleife wieder hoch springen lassen, oder nomal neu schreiben.

    empfehle aber ersteres.


    gruß

  • Er soll es die ganze Zeit prüfen.

    Wie würde so eine While-Schleife aussehen?
    Wäre das ok?

    [autoit]


    While True
    ControlCommand( "ACD Agent - Nachtschicht 1", "Nachbearbeitung", 1035, "ischecked") or ControlCommand("ACD Agent - Nachtschicht 1", "&Bereit", 1033, "ischecked")
    WEnd

    [/autoit]
  • Hi,

    ich würde dir empfehlen deinen Ablauf erstmal im Worten zu formulieren. PseudoCode.
    Nimm dir ruhig die Zeit. Wenn dies hast, dann kannst du es in Code umsetzen.

    Mega

    Jap, da stimm ich dir zu! Habe am Anfang auch immer wild drauflosgebastelt, wobei es eigentlich viel leichter gegangen wäre. Man sollte sich aufjedenfall vorher immer Gedanken machen ;).

  • zumindest kann man dir dann auch besser helfen.

    deine funktion würd ich erstmal mal definieren.--> mit ner Variablen geht das dann besser...

    Spoiler anzeigen

    $func = 1

    $1 = ;deine überprüfung

    While $func = 1

    $1 = überprüfung

    If ;das was du überprüfen möchtest überprüft wurde Then

    $func = 0

    EndIF

    Sleep(100)

    Wend


    So ungefähr vom Ansatz ;)

    gruß

    Einmal editiert, zuletzt von Dönn3y (13. März 2008 um 16:06)