Problem mit WinGetState

  • Hey, kleines Problem.

    Ich brauch nen Codeschnipsel der mir sagt, wie viele offene Fenster gerade zu sehen sind.

    Wenn ich also den Rechner und Chrome offen hab, und alle anderen Fenster Minimiert sind, sollte da 2 raus kommen...

    Ich verwende:

    Damit kommen teils Zahlen raus, die ich nich verstehe. Wenn ich nur 2 Fenster sehe, meint das Script es wäre 18 offen u.s.w.

    Jemand ne Idee?

  • Du hast beim Umsetzen des Beispiels aus der Hilfe etwas überlesen, veruch es eimal so:

    Code
    $List = WinList
    $Count = 0
    Local $List = WinList()
    For $i = 1 To $List[0][0]
        $getState = WinGetState($List[$i][1])
        If BitAND($getState, 2) And $List[$i][0] <> "" Then $Count = $Count + 1
    Next
    MsgBox(0, "", $Count)
  • Hab auch den Code aus der Hilfe schon 1:1 kopiert. Genau wie bei deinem Beispiel kommt bei 1 geöffneten, bzw. sichtbaren Fenster 13 raus.

    Das is ja das was ich von der Logik her nich versteh....

    Scheinbar werden die Minimierten Fenster mit gezählt.

    Gezählt werden sollten eben nur jene, die eben offen sind,

    die ich mit meinen Augen sehn kann, bzw. auch solche die sind hinter andern Fenstern verstecken.

  • $List = WinList

    Wofür soll diese Zeile denn gut sein?8o

    Mit $List[$i][0] <> "" prüfst du ja lediglich, ob das Fenster einen Titel hat... dass muss es aber nicht, um sichtbar zu sein... ich verstehe deshalb nicht, wieso du die ohne Titel ausfilterst... ich denke, er sucht wohl eher die Funktion _WinAPI_EnumWindowsTop.

  • Sry aber da kommt immer noch zu viel raus ^^

    Genau wie bei WinList werden auch hier minimierte, unsichtbare und sonstige Fenster angezeigt, von denen kein Schwein ne Ahnung hat wo sie her kommen.

    Liegt das evtl. an Windoof 10?

    Vllt. mal den Bildschirm aufn Kopf stellen und schütteln, vllt. falln da nochn paar Fenster raus. -.-

    Funktionierts denn bei Euch korrekt?

    2 Mal editiert, zuletzt von Michi91 (22. September 2018 um 20:46)

  • Funktionierts denn bei Euch korrekt?

    Ja, allerdings nicht so, wie du es dir vorstellst.

    Genau wie bei WinList werden auch hier minimierte, unsichtbare und sonstige Fenster angezeigt, von denen kein Schwein ne Ahnung hat wo sie her kommen.

    Nein, denn die filterst du doch mit WinGetState aus... allerdings bleiben dann noch einige über, die dich nicht interessieren... die sind dann auch sichtbar und nicht minimiert... das Script macht also genau das, was es soll... nur nicht, genau das, was du willst... die unerwünschten Fenster könntest du evtl. über den Namen des Prozesses bzw. des Parent-Prozesses und des ProzessesUsers herausfiltern. Eine andere Lösung fällt mit mom. auch nicht ein.

    Hier mal ein Beispiel:

    Einmal editiert, zuletzt von Bitnugger (22. September 2018 um 21:45)

  • Also ich bekomme bei meinem Skript immer 1 Fenster zu viel heraus, auf der Suche warum habe ich es nochmal abgehandelt:

    die Datei hat folgenden Inhalt:

    Code
    5|
    C:\Users\hB\AutoIt.MyAu3s\Test\a.au3 - SciTE [6 of 7] State:15|0x000C0298
    GlassWire State:7|0x0006034C
    Problem mit WinGetState - Hilfe & Unterstützung - AutoIt.de - Das deutschsprachige Forum. - Mozilla Firefox State:39|0x000705E6
    Administrator: C:\Windows\SYSTEM32\cmd.exe State:7|0x000302F0
    Program Manager State:7|0x001E06C4
    für deinen Zweck:

    in beiden Löungen mußt du noch den Program Manager abziehen.

    2 Mal editiert, zuletzt von autoBert (23. September 2018 um 18:51)