Frage zu WinGetState

  • Hallo,
    ich habe da einige kleine Fragen zu dem "WinGetState"-Befehl und seinen Rückgabewerten.

    Wenn ich den Status eines Fensters mit dem Befehl abfrage, gibt der mir ja folgende Werte zum auswerten zurück.

    1 = Fenster existiert.
    2 = Fenster ist sichtbar.
    4 = Fenster ist freigegeben. 
    8 = Fenster ist aktiv.
    16 = Fenster ist minimiert.
    32 = Fenster ist maximiert.

    Die Bedeutung der Werte 1, 2, 16 und 32 ist mir klar, nur worin besteht eigentlich der Unterschied zwischen 4 und 8 ?
    Ein Fenster, in dem man etwas eingeben kann, müsste doch freigegeben und aktiv sein ?
    Anscheinend kann ein Fenster aber freigegeben und trotzdem inaktiv sein.

    Den Status eines Fensters kann ich doch z.B mit:

    [autoit]

    For $_Cntr = 0 To 20
    Sleep(1000)
    If Not BitAND(WinGetState($_Wnd_Title, $_Wnd_Text), 8) And Not BitAND(WinGetState($_Wnd_Title, $_Wnd_Text), 4) Then
    ExitLoop
    EndIf
    Next

    [/autoit]

    abfragen.
    Diese Programmzeilen müsste doch eigentlich zum gleichen Ergebnis führen:

    [autoit]

    For $_Cntr = 0 To 20
    Sleep(1000)
    If Not BitAND(WinGetState($_Wnd_Title, $_Wnd_Text), 12) Then
    ExitLoop
    EndIf
    Next

    [/autoit]

    Oder sehe ich da etwas total falsch, da die beiden Versionen zu unterschiedlichen Ergebnissen führen.
    (im zweiten Fall wird die Schleife anscheinend schneller durchlaufen, so als wenn der "Sleep(1000)"-Befehl einfach ignoriert würde. Der Schleifenzähler "$_Cntr" erreicht den Wert 20 in nur etwa fünf Sekunden).

    MfG:
    BigRox

  • Aktiv bedeutet das das Fenster den Fokus hat.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Aktiv bedeutet das das Fenster den Fokus hat.

    Das stimmt leider aber nicht immer.
    Z.B beim Setup zu MSDN-Library gibt es ein Fenster in dem man seinen Namen und die Organisation eintragen muss.
    Nach dem Klick auf OK erscheint ein weiteres Fenster zum bestätigen der Angaben. Dieses Fenster hat den Status 47(101111), ist also aktiv .
    Jedoch bleibt das erste Fenster (wo man seine Namen usw. eintragen muss) im Hintergrund sichtbar und dieses Fenster hat den Status 43(101011), es ist also auch noch aktiv, obwohl es keinen Fokus mehr hat.
    Den Unterschied macht da nur das "freigegeben" Bit 4
    Anscheinend bedeutet da "freigegeben" das dieses Fenster den Fokus hat (was bedeutet dann aber "aktiv") ?

    Oder legt MS mal wieder die Regeln etwas anders aus ?

    MfG:
    BigRox

  • Weiß nicht welches Setup du da hast, mir ist aber schon mehrmal aufgefallen, dass bei den neuen Setups die auf Flash ausbauen z.b. office 2010 der status der Fenster teilweiße als aktiv gesetzt sind obwohl sie nicht den Fokus haben.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.