Schleifenende mit externen Buttonklick

  • Ahoi Matrosen. Nachdem mir hier schon mal so gut geholfen wurde, wende ich mich nochmals an euch, da ich ein wenig auf dem Schlauch stehe. Also

    In der Firma arbeiten wir mit dem Citrix XenApp Protal...in dieses logge ich mich automatisch mit folgendem Code ein

    Code
    Run("C:\Program Files (x86)\Citrix\SelfServicePlugin\SelfService.exe -logon")
    sleep(500)
    WinWaitActive("Citrix Receiver")
    			sleep (500)
     			ControlSetText("Citrix Receiver", "", "[NAME:textBoxUser]", "emea\" & $user)
     			ControlSetText("Citrix Receiver", "", "[NAME:textBoxPass]", $Value)
    			sleep(500)

    wobei in Zeile 5 $user mein username ist und in Zeile 6 $value das Passwort

    so zu meinem Problem...ab und zu spinnen unsere IT Admins und die Gruppenrichtlinien hauen nicht richtig hin. Dann kommt es vor, dass der Befehl ControlSetText einfach keine Daten überträgt. Für den Fall möchte ich eine Abfrage der Inputfelder. Das klappt auch, doch die Warteschleife, bis der Logonbutton manuell gedrückt wird, hängt sich ewig aus...hier mal der komplette codeabschnitt

    haut nicht hin...hier nochmal die Window Infos vom Okaybutton

    Spoiler anzeigen


    dankt vielmals im Voraus für eure Hilfe...


    der tommii

  • Wenn es keine Daten überträgt sollte die Funktion ControlsetText eigentlich eine 0 ausgeben, versuch das mal nach folgendem Prinzip (ungetestet):

    AutoIt
    If Not ControlSetText("Citrix Receiver", "", "[NAME:textBoxPass]", $Value) Then
    	MsgBox(16,"Error","Kein Control gefunden!")
    Else
    	MsgBox(0,"Erfolgreich","Läuft alles!")
    EndIf


    Edit:
    Warum benützt du in Zeile 11 Call? ?(
    Funktionen kannst du auch direkt aufrufen:

    AutoIt
    warten()
  • Meine programmierkenntnisse kommen aus visual basic....Deswegen call ;)

    Naja aber wenn der error sagt nichts übertragen muss ich ja in die warte schleife weil sonst wird das Script ja weiter ausgeführt.....Und da hart es bei mir...Ich versuche es nachher auf der Arbeit mal aber falls jemand da noch nen Ansatz hat wäre ich dankbar

    Lieben Gruß tommii

  • sodele ja die if abfrage funktioniert und den call befehl habe ich entfernt...leider bin ich mit der schleife noch nicht weiter...

    also wenn kein control gefunden wurde, möchte ich in eine schleife, bis der okay button gedrückt wurde


    Spoiler anzeigen


    Title: Citrix Receiver Class: WindowsForms10.Window.8.app.0.17ad52b Position: 746, 366 Size: 428, 307 Style: 0x16C80000 ExStyle: 0x00050101 Handle: 0x00000000000A06EA >>>> Control <<<< Class: WindowsForms10.BUTTON.app.0.17ad52b Instance: 1 ClassnameNN: WindowsForms10.BUTTON.app.0.17ad52b1 Name: buttonOK Advanced (Class): [NAME:buttonOK] ID: 2034324 Text: &Anmelden Position: 140, 191 Size: 85, 23 ControlClick Coords: 49, 14 Style: 0x56012F01 ExStyle: 0x00000000 Handle: 0x00000000001F0A94 >>>> Mouse <<<< Position: 938, 596 Cursor ID: 0 Color: 0x569BDA >>>> StatusBar <<<< >>>> ToolsBar <<<< >>>> Visible Text <<<< &Anmelden Abbrechen Melden Sie sich an 'wiportal-e067' an. &Domäne\Benutzer: &Kennwort:

  • so sollte es funktionieren...

  • hi

    so sollte es funktionieren...

    hi 4ern...ich stehe gerade etwas auf dem schlauch, das einzubetten, da ich das ganze ja schon in einer Funktion starte :( ....also meine ausgangssituation ist folgende:

    wenn ich meinen teil jetzt durch deinen teil ersetze, bekomme ich einen fehler: also erstmal hier der code mit deinem entwurf:


    der fehler:

    in Zeile 27: "P:\Bremen\[...]\abc.au3"(420,34) : warning: $hwndCitrix: possibly used before declaration.


    liegt das an der "lokalen" Deklaration der variabeln, da ich sie in einer Funktion danach wieder anspreche? Wenn ja, wie mache ich sie global?...danke im voraus :/

  • :) ok wusste nicht das du das in einer Funktion hast, somit müsstest du selbstverständlich der _warten() Funktion auch die Variable mit geben.

  • ich schäme mich zu fragen, doch wie bekomme ich mehrere variablen übergeben? denn jetzt meckert er logischerweise beim $sClass_btnOK das sich nicht deklariert ist...mit

    func _warten($hwndCitrix, $sClass_btnOK)

    geht es leider nicht... :(

  • Das ist ganz einfach gehalten.

    Übergebe die Variablen sowohl in den Aufruf der Funktion, als auch in die eigentliche Funktion, getrennt durch Komma, also z. B. bei dir

  • ich ochse....habe es gerade selber bemerkt, dass man die in der ersten Funktion quasi losschicken muss und in der zweiten annehmen :)

    danke fürs erste...nun geht's ans testen :D

  • hmmm, ich glaube ich bin gerade zur traurigen Erkenntnis gekommen, dass unsere IT doof ist...denn sie wussten nicht, was sie tun...

    wenn die controlsettext Aktion nicht hinhaut, soll das Script nach 5 Sekunden ja in die Warteschleife gehen. Das wird ja über eine IF Abfrage mit Controlgettext abgefragt. Die Warteschleife habe ich um eine MSGbox erweitert. Sollte also die Warteschleife gestartet werden, sollte die MSGBox erscheinen....tut sie aber nicht...

    AutoIt
    func _warten($hwndCitrix, $sClass_btnOK, $sText_btnOK)
    	  MsgBox(0x10,"Fehler","Uuuups...da ist etwas schiefgelaufen. "& @CRLF & @CRLF & "Bitte beim Chef melden und die Daten manuell eintragen.")
    	while ControlGetText($hwndCitrix, '', $sClass_btnOK) == $sText_btnOK
    		sleep(100)
    	wend
    endfunc


    über die abfrage des Inputs hat es bis dato hingehauen....bin also gerade am grübeln, weil dieses ja auch control befehl ist, was ich für eine alternative habe

    AutoIt
    $check_input = ControlGetText("Citrix Receiver", "", "[NAME:textBoxUser]")
    			If $check_input == '' Then
    			   MsgBox(0x10,"Fehler","Uuuups...da ist etwas schiefgelaufen. "& @CRLF & @CRLF & "Bitte beim Chef melden und die Daten manuell eintragen.")
  • dafür lacht ihr mich aus ;( das ist ein zusammengewürfeltes Autoitgebilde....naja was solls


    ab zeile 392 ist der Login teil...

    und naja, dass da funktionslose zeilen drin sind ist mir bewusst....habe an mehreren seiten angefangen und das sind meine ersten versuche "ohne" hilfe (außer vom bitnugger hier aus dem forum mit dem controlsettext)


    habe zuviel vba geschrieben

    danke trotzdem

  • hi, nach kurzer Krankheit nun wieder Vorort. Nein, der Anmeldebuttontext ändert sich nicht...ich bin mir ziemlich sicher, dass das irgendwie mit den Win7 Gruppenrichtlinien zu tun hat...der Witz ist, dass es sporadisch hinhaut und sporadisch nicht...ich weiß nur leider nicht wo ich ansetzen soll....bei meinem Chef (lokaladmin) geht es immer....leider weiß auch er nicht, ob/was die globaladmins am gruppenrichtliniendienst rumspielen oder nicht...