Кто-нибудь знает об способ обнаружения движения любых окон, открытых в настоящее время в системе Windows? Мне нужно определить движение окна, определить, сталкивается ли оно с моей формой приложения, и удалять ее из-под нее, если это необходимо.Обнаружение и предотвращение перекрытия окон в C#
Я знаю, что могу прокручивать список и проверять каждое окно, но это способ интенсивно выполнять постоянно.
фона:
У меня есть панель задач в стиле приложение, которое доки на стороне экрана пользователя. Когда функция «Всегда сверху» включена, максимизированные окна занимают оставшееся свободное пространство, не закрывая панель инструментов, как и ожидалось.
Однако, если вы перетащили не-максимизированное окно над панелью инструментов, приложение пойдет за панель инструментов (также ожидается), но вы больше не можете захватывать строку заголовка, чтобы переместить ее обратно - окно застревает, если вы отключите «Always on Top», а затем переместите его. Итак, я хочу выбить окно из-под него.
Примечание: пользователи всегда могут использовать клавиатуру, чтобы переместить его обратно: ALT + SPACE, M, со стрелкой вправо (или любую клавишу со стрелкой на самом деле), то окно следует за мышью. –
@jeffamaphone: не многие пользователи знают, что хотя –
Конечно, пользователи могут ... но они также будут очень вокально об их неодобрении этого метода :) – Matt