ControlClick Probleme

  • Tach!

    Ich als blutiger Anfänger wollte den ControlClick Befehl in eines meiner Scripts einbauen, doch musste feststellen, dass es irgendwie nicht klappte.
    Nach ewigem rumprobieren, rumgegoogle und nach Suche in den Helpfiles, hab ich ein "Mini-ControlClick Script" geschrieben, um zu testen ob meine Grundidee richtig ist.

    Also: MsgBox öffnen, und per ControlClick wieder schließen.

    Leider tut sich auch hier nichts, und deshalb bitte ich um Hilfe: Was mache ich falsch?
    Hier das Script:

    [autoit]

    #RequireAdmin

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

    MsgBox (0, "Click", "Test")
    Sleep(1000)

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

    $titel="Click"
    $text= "OK"
    Sleep (1000)

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

    ControlClick ( $titel, $text, 2 , "left")

    [/autoit]

    Hab alles versucht, auch mit Koordinaten (50,15) allerdings vergeblich.. Die ID müsste stimmen, hab sie mit dem Window Tool ausgelesen.

    Vielen Danke schonmal,

    Wreck :)

    3 Mal editiert, zuletzt von WreckaGe (23. Mai 2012 um 18:29)

  • Das Problem: Eine MsgBox pausiert das Script so lange, bis eine Option gewählt wurde. Wenn man dein Script also ausführt und nichts anklickt, dann erscheint die MsgBox und der Rest des Scriptes wird nicht angetastet, da die MsGBox auf eine Antwort von dir wartet. Wenn du jedoch in der Box auf OK klickst, dann verschwindet sie. 2 Sekungen später versucht dein Script dann die MsgBox zu schließen, die ja schon weg ist.
    Einfachster Weg: Erstelle 2 Scripte.
    Script 1:

    [autoit]


    MsgBox (0, "Click", "Test")

    [/autoit]

    Script 2:

    [autoit]

    $titel="Click"
    $text= "OK"
    Sleep (1000)

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

    ControlClick ( $titel, $text, 2 , "left")

    [/autoit]

    Das #RequireAdmin ist übrigens unnötig.

  • ...oder alternativ einfach eine nach MsgBox-aussehende GUI gestalten und verwenden.
    Da kannst du dann auch Control Click verwenden ohne einen 2. Skript.

  • Klasse, danke euch, ich probiers nachher mal aus :)

    €: Hat geklappt, musste allerdings es merhmals versuchen zu closen..
    So ist das daraus geworden:

    [autoit]

    If WinExists ($titel) Then
    Do
    ControlClick ( $titel, $text, 2 , "left")
    Sleep (200)
    Until WinExists ($titel) = 0
    Endif

    [/autoit]

    Danke nochmal ;)

    2 Mal editiert, zuletzt von WreckaGe (23. Mai 2012 um 18:28)

  • Du kannst aber auch den Parameter Timeout belegen, wenn du sowieso das per Zeit machen willst.