Windows API имеет метод, называемый GetForegroundWindow
. Но при щелчке по нему он рассматривает Рабочий стол как окно переднего плана. Мы все знаем, что когда это произойдет, предыдущее окно переднего плана не накладывается на него. Как получить реальный дескриптор окна переднего плана?Как получить окно переднего плана в Windows?
ответ
Я думаю, что вы переоцениваете свое решение. Если ваше окно приложения не является окном переднего плана при получении обновления, запустите окно. Пункт мигания заключается в том, чтобы привлечь внимание пользователя, и у вас нет способа определить, есть ли у вас их внимание программно.
Похоже, что вы действительно хотите знать: «Является ли часть моего окна, которая изменяется в настоящее время на вид пользователя?» Это довольно сложный вопрос для ответа, и даже если вы ответите правильно, у вас нет способа узнать, заметит ли пользователь изменение.
Я просто хочу его реализовать, потому что я протестировал другое приложение (Google Talk), и оно работает, как я описываю. –
@Jader: даже если вы полны решимости сделать это, найти окно «переднего плана» - это не путь, как отметил Питер в своем комментарии к вашему вопросу, может быть более одного (и они могут не быть затенение * вашего * окна в любом случае). Если вы просто хотите узнать, может ли пользователь * видеть * ваше окно, я подозреваю, что изучение области отсечения (для ** вашего ** окна) - это путь ... но это тема для другого вопроса. – Shog9
И «рабочий стол» (Explorers рабочий стол ListView поверх реального окна рабочего стола) и панель задач настоящие окна, где пользователь может быть «рабочий» (Tab'ing вокруг, используя меню и т.д.)
Если вы хотите, чтобы найти «реальное» окно переднего плана, что плохо вы должны найти его самостоятельно, лучше будет для окна в верхней части г-го порядка, может быть что-то вроде:
... enumfunc(hwnd,...)
{
if (GetClassName(hwnd)!= "Shell_TrayWnd")
{
if (IsWindowEnabled(hwnd) && IsWindowVisible(hwnd) && GetWindow(hwnd,GW_OWNER)==NULL)
{
DoSomethingWithRealForegroundWindow(hwnd)
return FALSE
}
}
}
EnumWindows(enumfunc,0)
TaskSwitchXP является открытым источник замены alt-tab, он, вероятно, имеет лучший алгоритм, который вы можете использовать ...
- 1. Установите окно переднего плана в Windows 8
- 2. Как получить конкретное окно переднего плана приложения
- 3. Рубин принести окно переднего плана
- 4. Задача переднего плана Jenkins
- 5. Как получить экземпляр действия переднего плана?
- 6. Подсветка синтаксиса переднего плана
- 7. Ограничение объекта переднего плана
- 8. Как принести окно переднего плана с помощью C#?
- 9. API-интерфейс переднего плана
- 10. Связать переднего плана сложенного ребенка перед лицом переднего плана?
- 11. Добыча переднего плана
- 12. Стратегии тестирования переднего плана?
- 13. Как изменить ось переднего плана?
- 14. Как создать задачу переднего плана?
- 15. Остановлена перезагрузка переднего плана
- 16. Достижение эффекта переднего плана
- 17. сделать обзор переднего плана
- 18. Пример использования переднего плана
- 19. Цвет переднего плана DataGridTextColumn
- 20. LongListSelector Цвет переднего плана
- 21. Получить (реальный) процесс переднего плана, используя activityManager.getRunningAppProcesses()
- 22. Получить активность переднего плана из названия пакета?
- 23. Наружная экипировка переднего плана
- 24. получить маску переднего плана с OpenCV
- 25. Получить цвет переднего плана свойства UITextField.placeHolder?
- 26. Как управлять окном переднего плана через процессы?
- 27. Изменить текст переднего плана texbox
- 28. Почему HWND_NOTTOPMOST не может вывести окно переднего плана в xp?
- 29. Как установить цвет переднего плана кнопки SWT?
- 30. Как получить идентификатор процесса не отвечающего приложения переднего плана?
Предположим, у вас есть два видимых окна над рабочим столом. Какой из них является «реальным» передним окном после нажатия на рабочем столе? –
Было бы полезно узнать, чего вы пытаетесь достичь. Ваш вопрос, как написано, не имеет смысла. –
Это, конечно, не нормальное поведение, которое никогда не было видно ни на одной из моих машин. Остерегайтесь «надстроек», которые пытаются подражать десктопу. –