preload
Фев 05

Начитавшись в интернете статей о том, как легко создается хранитель экрана с помощью библиотеки  scrnsave.lib в Visual Studio, я решил попробовать ее на практике. Собрав простенький пример на базе этой статьи, я… хм… обломался. Хранитель экрана упорно ругался на то, что не найдена функция ChangeWindowMessageFilter в USER32.DLL.Погуглив я узнал, что такая функция появилась впервые в Windows Vista, а в XP и более ранних ею даже не пахнет. Проект я создавал в VS2008 Express, в который входила библиотека scrnsave.lib с сылкой на эту функцию. Из доступных советов было только, скачать более раннюю версию scrnsave.lib, создать DLL с «заглушкой», и написать на форуме Microsoft SDK и тихо ждать. Еще один вариант был, создание хранителя экрана с нуля – с самостоятельной обработкой всех событий и т.п. Не густо.

Помедитировав над проектом какое-то время, я нашел достаточно простое решение, которое прекрасно работает в моей XP.

Итак, все что необходимо сделать, это пометить USER32.DLL, как отложенно загружаемую. Если конкретнее, то открываем свойства проекта, переходим в Свойства конфигурации\Компоновщик\Ввод и в значение параметра Отложенно загружаемые DLL дописываем USER32.DLL.

Leave a Reply

You must be logged in to post a comment.