Microsoft "Windows-Diagnose": Button auswählen, sobald dieser vorhanden ist

  • Hallo zusammen,

    ich versuche den Ablauf der GUI von der "Verzeichnisdienst-Diagnose" zu automatisieren.

    Leider bin ich bisher nicht auf einen Weg kommen, der automatisch erkennt, sobald dass sammeln von Informationen abgeschlossen ist.. es läuft aktuell in den TimeOut nach 180 Sekunden ein, was ich offen gestanden "unschön" finde :(

    Das Fenster sieht so aus:

    Folgendes habe versucht:

    WinWaitActive("Verzeichnisdienst-Diagnose", "[CLASS:CtrlNotifySink; INSTANCE:17]", 180) ; Wartet bis "Klicken Sie auf "Speichern".... "-Text aktiv ist

    WinWaitActive("Verzeichnisdienst-Diagnose", "[CLASS:Button; INSTANCE:1]", 180) ; Wartet bis der Button "Speichern" aktiv ist

    und einige andere Varianten, leider alle ohne Erfolg.

    Auch konnte ich bisher nichts "brauchbares" oder "mir verständliches" ("Asche über mein Haupt" ^^) dazu finden..

    hat da jemand noch eine Idee? :)

    Auszug aus dem "Summary" vom dem Fenster via AutoIt Windows Info:

    >>>> Window <<<<

    Title: Verzeichnisdienst-Diagnose

    Class: NativeHWNDHost

    Position: 515, 100

    Size: 584, 450

    Style: 0x96C80080

    ExStyle: 0x00040100

    Handle: 0x00000000002B0650

    >>>> Control <<<<

    Class: DirectUIHWND

    Instance: 5

    ClassnameNN: DirectUIHWND5

    Name:

    Advanced (Class): [CLASS:DirectUIHWND; INSTANCE:5]

    ID:

    Text:

    Position: 38, 96

    Size: 512, 255

    ControlClick Coords: 159, 80

    Style: 0x56000000

    ExStyle: 0x00000000

    Handle: 0x00000000001D07AE

    >>>> Mouse <<<<

    Position: 719, 306

    Cursor ID: 0

    Color: 0xFFFFFF

    >>>> StatusBar <<<<

    >>>> ToolsBar <<<<

    >>>> Visible Text <<<<

    Speichern

    Abbrechen


    >>>> Hidden Text <<<<

    &Fertig stellen

    Datenschutzbestimmungen online lesen

    Reparaturen automatisch anwenden

    Ja [empfohlen]

    Nr.

    Vielen Dank und Grüße

    Tralveller

    • Offizieller Beitrag

    Wenn du das oben gezeigte Fenster auf dem Schirm hast, gehe so vor:

    - Bekommst du das Handle?

    $hWnd = WinGetHandle("Verzeichnisdienst-Diagnose")

    ConsoleWrite("@@_Debug_line" & @TAB & @TAB & @ScriptLineNumber & " var: $hWnd --> " & $hWnd & @LF)

    - wenn ja, hast du Zugriff auf das Control?

    $hButton = ControlGetHandle($hWnd, "Speichern", "[CLASS:Button; INSTANCE:1]")

    oder

    $hButton = ControlGetHandle($hWnd, "", "[CLASS:Button; INSTANCE:1]")

    ConsoleWrite("@@_Debug_line" & @TAB & @TAB & @ScriptLineNumber & " var: $hButton --> " & $hButton & @LF)

    - wenn alles klappt, solltest du auch den Button klicken können:

    ControlClick($hWnd, "", $hButton)


    Und das fertige Skript könnte dann so aussehen:

    Python
    $hWnd = WinWaitActive("Verzeichnisdienst-Diagnose")
    While True
        $hButton = ControlGetHandle($hWnd, "", "[CLASS:Button; INSTANCE:1]")
        If IsHWnd($hButton) Then
            ControlClick($hWnd, "", $hButton)
            ExitLoop
        EndIf
        Sleep(100)
    WEnd