Problem mit EnumWindows



  • Hallo,

    ich habe mir alle Fenster mit EnumWindows() aufzählen lassen und mitgeführt. Aber das sind zuviele, weil auch die ganzen Systemfenster mit dazukommen. Jetz wollte ich prüfen, welche Fenster maximiert, minimiert oder nomral angezeigt werden. Aber jedes Fenster liefert beim Test mit GetWindowPlacement SW_SHOWNORMAL zurück. Somit kann ich die alle nicht auseinanderhalten. Vielleicht vergleiche ich auch falsch:

    if(winplace.showCmd==SW_SHOW) //...
    

    Wenn mir jemand helfen könnte, wäre ich sehr dankbar.

    Gruß!
    Unzi



  • Dafür gibt's die Funktionen IsIconic() und IsZoomed()



  • Wenn ich diese Funktionen benutze, dann bekommen ich ja nur die minimierten und die maximierten Fenster. Ich hätte aber auch gern die normalen Fenster, die normalerweise SW_RESTORE zurückliefern.

    Gruß!
    Unzi



  • Wo ist das Problem? Es gibt doch nur 3 Möglichkeiten; Normal, minimiert, maximiert.

    if(!IsZoomed(hWnd) && !IsIconic(hWnd))
    {
    // Restored
    }
    


  • Eben leider nicht!!!

    -Versteckt
    -Normal
    -Minimiert
    -Maximiert !

    Ich ärger mich auch drüber, dass ich die ganzen Systemfenster bekomme. Aber die sind versteckt oder werden nicht in der Windows-Taskleiste angezeigt.

    Gruß!
    Unzi



  • Achso, das hab ich ganz vergessen 😉
    Dann solltest du noch IsWindowVisible() verwenden. Mit GetParent bzw. GetWindow(GW_OWNER) sollte sich auch rauskriegen lassen, ob das Programm in der Taskleiste steht.



  • Vielen Dank für deine nützlichen Tipps. Ich konnte mein Problem jetzt komplett Lösen ;).

    Gruß!
    Unzi


Anmelden zum Antworten