Страницы

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

четверг, 26 декабря 2019 г.

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

#directx #cpp


Существует программа 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 сек). Таким образом наблюдается
анимация на рабочем столе (но на первом проходе она виснет, почти не выполняется, потом
работает, в этом и проблема). Как реализовать нормально, без зависа и кучи картинок,
как в упомянутых в начале темы программах?    


Ответы

Ответ 1



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

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

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