![]() |
Модераторы: Snowy, Alexeis, MetalFan |
![]() ![]() ![]() |
|
MadCoder |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 478 Регистрация: 24.8.2007 Где: Москва Репутация: нет Всего: 2 |
Приветствую!
Как определить, что система (не обязательно моя программа) находится в полноэкранном режиме - например, пользователь смотрит фильм или играет во что-то... |
|||
|
||||
Alix |
|
|||
![]() L45 ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 4.5.2005 Где: Pskov/Spb Репутация: 1 Всего: 23 |
Имхо отлавливать изменение размеров окон приложений и если равны размеру экрана, то значит полноэкранный.
-------------------- Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой High tech. Low live. (с) Gardner Dozois |
|||
|
||||
BaD_SeCt0R |
|
|||
![]() Lazy Coder ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 9.10.2006 Где: Анапа Репутация: нет Всего: 18 |
Не полноэкранный, а максимизированный. -------------------- Кто владеет информацией - владеет миром. (С) Френсис Бэкон. |
|||
|
||||
MadCoder |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 478 Регистрация: 24.8.2007 Где: Москва Репутация: нет Всего: 2 |
Не, мне именно полноэкранный нужен, чтобы отлавливать игры и проигрывание видео... По идее просто, взять активное окно и проверить его статус, кто нить писал подобное?
|
|||
|
||||
Alix |
|
||||
![]() L45 ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 4.5.2005 Где: Pskov/Spb Репутация: 1 Всего: 23 |
я имел в виду client area окна, значит полноэкранный. полноэкранный режим это не какое-то особое состояние окна, а просто когда оно распахнуто на весь экран.
Это сообщение отредактировал(а) Alix - 30.9.2007, 07:41 -------------------- Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой High tech. Low live. (с) Gardner Dozois |
||||
|
|||||
BaD_SeCt0R |
|
|||
![]() Lazy Coder ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 9.10.2006 Где: Анапа Репутация: нет Всего: 18 |
Добавлено через 1 минуту и 21 секунду Тут уж нужно, наверно CreateDevice отлавливать... -------------------- Кто владеет информацией - владеет миром. (С) Френсис Бэкон. |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
Нужно просто взять ForegroundWindow, взять его размеры и сравнить с размерами экрана.
|
|||
|
||||
MadCoder |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 478 Регистрация: 24.8.2007 Где: Москва Репутация: нет Всего: 2 |
Нашел рабочий код:
|
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
Ну об этом я и говорил.
Только брать нужно не через FindWindowEx, а, как я указал ранее, GetForegroundWindow и сравнивать его не с GetSystemMetrics, а с размерами экрана, на котором оно запущено. Ибо данный пример написан для систем только с одним монитором. А таких с каждым днём становится меньше... |
|||
|
||||
MadCoder |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 478 Регистрация: 24.8.2007 Где: Москва Репутация: нет Всего: 2 |
Второй вопрос: а как сделать так, чтобы не отлавливало, если это скринсейвер? |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
|
|||
|
||||
Alix |
|
|||
![]() L45 ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 4.5.2005 Где: Pskov/Spb Репутация: 1 Всего: 23 |
так ли это необходимо? MadCoder, имхо ты делаешь не так, как сказал Snowy. Надо так: 1. берешь его код для определения мониторов 2. получаешь окно с помощью GetForegroundWindow 3. сравниваешь его размеры и координаты со всеми мониторами в списке не надо FindWindowEx(0, Hndl, nil, nil), и все делать в цикле, foreground window только одно может быть. Хотя, кстати, может и не быть, так что неплохо бы сделать проверку возвращаемого GetForegroundWindow значения на nil. Вот только есть один момент. Если на одном мониторе что-то работает в полноэкранном режиме, а на другом открыт, скажем, блокнот и он активен, то такой вариант ведь не покатит. Получается что надо все-таки проходится по всем окнам. Или нет? -------------------- Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой High tech. Low live. (с) Gardner Dozois |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Звук, графика и видео" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |