Как определить, что запущено полноэкранное приложение?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Как определить, что запущено полноэкранное приложение?

Сообщение Space » 14.05.2009 (Чт) 22:21

Как определить, что запущено полноэкранное приложение? У меня обычное окно (не панель).

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Re: Как определить, что запущено полноэкранное приложение?

Сообщение awl100Alex » 15.05.2009 (Пт) 12:07

Можно попробовать через GetWindowPlacement получить подструктуру RECT структуры WINDOWPLACEMENT нужного окна, и потом сравнить эти координаты с Screen.Height; Screen.Width.

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: Как определить, что запущено полноэкранное приложение?

Сообщение dr.MIG » 15.05.2009 (Пт) 12:29

Всё проще.
Код: Выделить всё
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Const GWL_STYLE = -16
Private Const WS_MAXIMIZE = &H1000000

Private Sub Command1_Click()
    Dim styles As Long
    styles = GetWindowLong(Form1.hWnd, GWL_STYLE)
    If (styles And WS_MAXIMIZE) = WS_MAXIMIZE Then
      MsgBox "Полноэкранное"
    Else
      MsgBox "Обычное"
    End If
End Sub

Естественно, Form1.hWnd заменить на хэндл окна, которое надо проверить.
Salus populi suprema lex

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Re: Как определить, что запущено полноэкранное приложение?

Сообщение Space » 15.05.2009 (Пт) 12:33

dr.MIG, твой код будет определять максимизированное окно как полноэкранное?

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Re: Как определить, что запущено полноэкранное приложение?

Сообщение awl100Alex » 15.05.2009 (Пт) 15:11

dr.MIG
Да, точно! Через стили тоже можно. :D

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: Как определить, что запущено полноэкранное приложение?

Сообщение dr.MIG » 15.05.2009 (Пт) 15:54

Space писал(а):dr.MIG, твой код будет определять максимизированное окно как полноэкранное?

Я невнимательно прочитал вопрос просто, но, думаю, понятно теперь в какую сторону смотреть :).

А что кстати подразумевается под полноэкранным режимом — максимизированное окно без строки заголовка?
Salus populi suprema lex

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Re: Как определить, что запущено полноэкранное приложение?

Сообщение Space » 15.05.2009 (Пт) 16:04

окно, которое закрывает весь экран, типа ScreenSaver.

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Re: Как определить, что запущено полноэкранное приложение?

Сообщение awl100Alex » 15.05.2009 (Пт) 18:25

Space
Всё правильно! dr.MIG дал правильное направление. Вот сам убедись в этом...
Вложения
CheckMaximizedStatus.rar
Находим тип окон ScreenSaver...
(1.35 Кб) Скачиваний: 58

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Re: Как определить, что запущено полноэкранное приложение?

Сообщение Space » 16.05.2009 (Сб) 1:28

ничего оно не определяет! Ни скринсейвер, ни полноэкранное видео/изображение...
Вложения
FullScreen.zip
(1.13 Кб) Скачиваний: 55

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: Как определить, что запущено полноэкранное приложение?

Сообщение dr.MIG » 16.05.2009 (Сб) 9:29

В таком виде оно вообще ничего не определяет :lol:.

Для начала надо смотреть на каком именно месте код начинает работать не так как надо. Да и документацию читать полезно. Тебе ни о чем не говорит:
MSDN писал(а):The GetActiveWindow function retrieves the window handle to the active window attached to the calling thread's message queue.

:?:

Если заменить на GetForegroundWindow, то окна, которые разворачивает пользователь, будут определяться.

Никто и не говорил, что это универсальное решение — если максимизировать окно видео-плеера, то программа это отловит, если просто сделать его полноэкранным, скорее всего нет. Ну а момент запуска заставки можно легко отловить другим способом (на форуме есть мой пример с использованием WMI и более подходящий для твоей ситуации пример GSerg'а).

Add: да и поясни, чтобы не было путаницы в терминах — что ты подразумеваешь под словом «полноэкранное». Окно, не максимизированное, размером 800х600, размещенное по центру на мониторе с разрешением 800х600 тоже входит в это понятие? А немного сдвинутое вбок?
Salus populi suprema lex


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 56

    TopList  
cron