Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

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

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

Если верить справочнику по Win32 API:

bool bIsSaverActive;

SystemParametersInfo(SPI_GETSCREENSAVEACTIVE, 0, &bIsSaverActive, 0);
if (bIsSaverActive) {  ...  }

или

BOOL IsSaverRunning()
{ BOOL isNT;
  OSVERSIONINFO ovi; ovi.dwOSVersionInfoSize=sizeof(ovi);
  GetVersionEx(&ovi); isNT=(ovi.dwPlatformId==VER_PLATFORM_WIN32_NT);
  if (!isNT)
  { UINT dummy, srunning=0;
    BOOL res=SystemParametersInfo(SPI_SCREENSAVERRUNNING,0,&srunning,0);
    SystemParametersInfo(SPI_SCREENSAVERRUNNING,srunning,&dummy,0);
    if (srunning==0) return FALSE; else return TRUE;
  }
  // это прекрасно рабоатет под '95. Но НТ могут быть проблемы
  HWND hfw=GetForegroundWindow();
  if (hfw==NULL) return TRUE;
  LONG wl=GetWindowLong(hfw,GWL_STYLE);
  if ((wl&0xF0000000)!=WS_POPUP|WS_VISIBLE) return FALSE;
  RECT rc; GetWindowRect(hfw,&rc);
  if (rc.right-rc.left!=GetSystemMetrics(SM_CXSCREEN) ||
      rc.bottom-rc.top!=GetSystemMetrics(SM_CYSCREEN)) return FALSE;
  return TRUE;
}


К оглавлению

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог