Bedingung aus aktiven Fenster

  • Moin,

    ich wollte gerne eine Bedingung aus einem aktiven Fenster machen. Das heißt wenn sich ein bestimmtes Fenster öffnet, soll eine Aktion durchgeführt werden. Ich dachte man kann das so realisieren:

    [autoit]

    If (WinWaitActive("Druckerinstallations-Assistent","Möchten Sie den vorh")) Then
    Sleep(500)
    Send("{ENTER}")
    EndIf

    [/autoit]


    Wenn das Fenster nicht kommt, soll mit dem Script fortgefahren werden, was halt unter dieser Bedingung steht.
    Funktioniert aber leider nicht... Was habe ich falsch gemacht?

    Einmal editiert, zuletzt von Scritch (5. November 2010 um 10:58)

  • Bei WinWaitActive pausiert das Script, bis das Fenster kommt. Woher soll die Funktionm wissen, das es auch sein kann, dass das Fenster garnicht kommt. Wenn dann musste das anders aufbauen mit einem Timeout oder so.

  • du kannst der Funktion -> WinWait <- z. B. ein Timeout mit geben. könnte dann so aussehen:

    [autoit]

    If WinWait($winTITLE, $winTEXT, 15) Then
    WinActivate($winTITLE, $winTEXT)
    WinWaitActive($winTITLE, $winTEXT)
    ControlClick($winTITLE, $winTEXT, "Button3")
    EndIf

    [/autoit]

    Was möchtes du denn damit machen?? Einen Drucker installieren??

  • Oder so:

    [autoit]

    $hTimer = TimerInit()
    Do
    If WinActive("Druckerinstallations-Assistent","Möchten Sie den vorh") Then
    Sleep(500)
    Send("{ENTER}")
    ExitLoop
    EndIf
    Until TimerDiff($hTimer) > 5000

    [/autoit]
  • Genau, einen Drucker installieren. So ziemlich am Ende der Installation wird manchmal gefragt, ob, wenn schon einer vorhanden ist, der Treiber beibehalten, oder neuinstalliert werden soll. Jenachdem ob auf dem PC schonmal der Drucker installiert wurde oder nicht, kommt halt das Fenster und das Script stoppt an der Stelle.

    Ich werde das mal ausprobieren, danke euch.

  • Oder nutzt doch einfach den dritten Parameter von WinWaitActive ^^

    [autoit]

    If WinWaitActive("Druckerinstallations-Assistent", "Möchten Sie den vorh", 5) Then
    Sleep(500)
    Send("{ENTER}")
    EndIf

    [/autoit]
  • Wenn es nicht zwigent notwendig ist, das du es mit Fenstern machen musst, hab ich hier schon mal ein Script geschrieben Print Installer vielleicht nützt dir das auch.

  • Oder nutzt doch einfach den dritten Parameter von WinWaitActive ^^

    [autoit]

    If WinWaitActive("Druckerinstallations-Assistent", "Möchten Sie den vorh", 5) Then
    Sleep(500)
    Send("{ENTER}")
    EndIf

    [/autoit]

    Ich ralle das aber gerade irgendwie nicht. Wenn WinWaitActive("Druckerinstallations-Assistent", "Möchten Sie den vorh", 5) aktiv wird, soll enter gedrückt werden. Wenns nicht aktiv wird soll mir dem nächsten Punkt im Skript weitergemacht werden. Funktioniert so wie es da steht aber nicht... Stehe gerade bischen auf dem Schlauch :pinch:

    Edit: Hat sich erledigt. Dachte die "5" wären Milisekunden, habe es daher in 200 geändert. Sind es aber nicht scheinbar...

  • Also bei mir läuft es. Es wartet maximal 5 Sekunden auf das Fenster. Wenn es nicht kommt, wird das Script weitergemacht.