Страницы

Поиск по вопросам

четверг, 29 ноября 2018 г.

Как работает программа показа живых обоев на рабочем столе (winVista/7/8/8.1)?

Существует программа DreamScenes, которая позволяет устанавливать видео обои на рабочий стол (обычное видео в формате dream/wmv/mpg). Также в VLC media player есть функция показа видео в режиме обоев (исходники данной программы доступны, но разобраться в них не получилось: Исходники). Как выглядит код, реализующий такую фичу? Пока я смогла реализовать такое "чудо" таким образом (примерный код, рабочий): #include #include #include
using namespace std;
void main() { WIN32_FIND_DATA File; HANDLE F; for(int i=0; i < 10; i++) { F=FindFirstFile("C:\\leto\\*.jpg", &File); if (F!=INVALID_HANDLE_VALUE) { do { ofstream bat("C:\\logo.bat", ios_base::out); bat << "REG ADD \"HKCU\\Control Panel\\Desktop\" /v Wallpaper /d \"C:\\leto\\" << File.cFileName <<"\" /f" << endl << "rundll32.exe user32.dll,UpdatePerUserSystemParameters" << endl; bat.close(); system("C:\\logo.vbs"); Sleep(200); } while (FindNextFile(F,&File)!=0); FindClose(F); } } system("pause"); } Описание: В папке находятся картинки (кадры анимации). Находим первую картинку, в батнике прописываем код, который меняет обои рабочего стола на мою картинку, запускаем vbs-скрипт, который позволяет выполнять батник в фоновом режиме, затем делаем паузу между выполнением следующей команды в программе С++ (0.2 сек). Таким образом наблюдается анимация на рабочем столе (но на первом проходе она виснет, почти не выполняется, потом работает, в этом и проблема). Как реализовать нормально, без зависа и кучи картинок, как в упомянутых в начале темы программах?


Ответ

Отрисовку можно сделать посредством DirectDraw, вот тут есть пример. Но, решение несовместимо с Aero, придется выключать.

Комментариев нет:

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