Ich hatte zuerst die einzelnen Koordinaten geprüft. Aber um den Code zu vereinfachen, verwende ich nun IntersectRect und prüfe damit, ob die gespeicherten Koordinaten auf einem der Monitore liegen. Wenn die Größe des Rechtecks der Schnittmenge ca. meinem ursprünglichen Rechteck entspricht, ist das Fenster (fast) vollständig sichtbar.
Darauf basierend kann man dann überlegen, was man macht. Ich speichere dafür auch neben dem Rechteck die Größe der Schnittmenge und die Position auf dem Monitor. Es kann ja auch sein, dass das Fenster nicht komplett auf dem Bildschirm sein soll.
Betriebssystem ist Windows 11 und wenn ich mal alle Screens logge kommt das dabei raus,
obwohl das 2. Display (angeschlossen per USB-C -> VGA Adapter) in dem Moment gerade aus ist:
Leider kommt es bei solchen Adaptern vor, dass Windows nicht erkennen kann, dass das Display aus ist. Das liegt dann an dem konkreten Adapter.