Итак, я думал, что это будет просто, и, ну, я был неправ. Вот упрощенное описание проблемы:
Я пишу небольшое приложение для наших производственных пользователей, которое будет щелкать скриншот всего рабочего стола, а также окна переднего плана, когда они щелкают значок приложения на панели задач. В настоящее время я использую метод Win32 «GetforegroundWindow» в событии MouseMove объекта NotifyIcon, чтобы сохранить дескриптор окна переднего плана и сделать снимок экрана в событии Click.
Иногда это работает, но если я щелкаю по значку очень быстро, я фактически получаю панель задач вместо окна переднего плана. Я не уверен, почему это происходит (я понимаю, что панель задач является окном, я не понимаю, почему иногда кажется, что он имеет фокус в MouseMove, прежде чем я нажал), и мне не повезло с использованием метода EnumWindows также, вероятно, потому что я не совсем понимаю, как это работает.
Казалось бы, если бы я мог получить позицию z каждого окна, используя только дескриптор окна, это было бы легко решить с помощью EnumWindows. Однако я не нашел способа сделать это.
Итак, я вас спрашиваю, ребята; Как бы вы написали метод для надежного определения местоположения окна переднего плана, учитывая, что оно может не фокусироваться в данный момент? Либо мой гугл-фу подводит меня, либо информации об этом немного. Заранее спасибо.