Мониторинг активности заставки завершается неудачно в Windows 7 - PullRequest
1 голос
/ 05 мая 2011

Добрый день, у меня есть фрагмент кода, который я использую для мониторинга активности заставки в Windows XP и далее, в настоящее время она работает корректно на всех ОС Windows, кроме Windows 7, я знаю, что некоторые параметры заставки для функции SystemParametersInfo недоступны в Windows 7, но считается, что SPI_GETSCREENSAVERRUNNING был доступен, код выглядит следующим образом:

BOOL bScrnSvrRunning = FALSE;
BOOL bResult = SystemParametersInfo(SPI_GETSCREENSAVERRUNNING, 0, &boolScreenSaverRunning, 0);

Функция всегда возвращает true для bResult, но bScrnSvrRunning всегда false,

Кто-нибудь знает, что может вызвать это?

Ответы [ 2 ]

2 голосов
/ 05 мая 2011

Вы используете неправильный параметр "слот". Посмотрите внимательно на объявление SystemParametersInfo:

BOOL WINAPI SystemParametersInfo(
  __in     UINT uiAction,
  __in     UINT uiParam,
  __inout  PVOID pvParam,
  __in     UINT fWinIni
);

И позвольте мне процитировать информацию для SPI_GETSCREENSAVERRUNNING:

Определяет, работает ли в данный момент хранитель экрана на оконной станции вызывающего процесса. Параметр pvParam должен указывать на переменную BOOL, которая получает значение ИСТИНА, если в данный момент работает хранитель экрана, или ЛОЖЬ в противном случае.

pvParam - это тот, кто получает информацию, поэтому вы должны указать свой логический параметр в параметре pvParam:

BOOL bScrnSvrRunning = FALSE;
BOOL bResult = SystemParametersInfo(SPI_GETSCREENSAVERRUNNING, 0, &boolScreenSaverRunning, 0);
1 голос
/ 06 мая 2011

Если вы действительно хотите, чтобы отслеживал активность заставки, которую вы можете использовать для использования службы уведомлений о системных событиях (SENS).Служба уведомлений о системных событиях отслеживает и отправляет туда, чтобы она могла уведомить ваше приложение о запуске (см. ISensLogon :: StartScreenSaver ) и остановке (см. ISensLogon :: StopScreenSaver ) экраназаставка многих событий.Пример использования SENS вы можете найти здесь (см. Также здесь и здесь ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...