Ich möchte alle Top-Level-Fenster (Kinder des Desktops) unter einem bestimmten Punkt auf dem Desktop finden. Ich kann keine API dafür finden.Finden Sie alle Fenster unter einem Punkt
Mein Szenario ist, dass ich ein Fenster über den Bildschirm ziehe und es in ein anderes (bekanntes) Fenster fallen lassen möchte. Ich kann die Grenzen des Zielfensters testen, aber das sagt mir nicht, ob es durch ein anderes (unbekanntes) Fenster verdeckt ist. Die Verwendung von WindowFromPoint
und Freunden funktioniert nicht, weil das Fenster, das gezogen wird, notwendigerweise direkt unter der Maus ist. Ich frage mich also, ob ich alle Fenster an der Mausposition abrufen kann, und überprüfe sie, ob eines der Fenster, die ich verfolge, direkt unter dem Fenster liegt, das ich ziehe.
Gibt es eine Möglichkeit, dies ohne Rückgriff auf EnumDesktopWindows
/GetWindowRect
auf jeden Mauswiderstand zu tun? Oder vielleicht gibt es eine andere Lösung, die ich vermisse.
Wenn Sie davon ausgehen, dass keine neuen Fenster erstellt wird, während Sie ziehen, können Sie die Top-Level-Fenster einmal aufzuzählen bei Beginnen Sie mit dem Ziehen, und verwenden Sie dann das Ergebnis, um bei jeder Mausbewegung während des Ziehens zu testen. –
Das ist eine Optimierung, die es wert ist, untersucht zu werden, danke. –
Sie können vielleicht mit 'GetNextWindow' durchkommen und nur die Fenster über Ihrem Ziel in der Z-Reihenfolge betrachten. – theB