Существует программа DreamScenes, которая позволяет устанавливать видео обои на рабочий стол (обычное видео в формате dream/wmv/mpg). Также в VLC media player есть функция показа видео в режиме обоев (исходники данной программы доступны, но разобраться в них не получилось: Исходники). Как выглядит код, реализующий такую фичу?
Пока я смогла реализовать такое "чудо" таким образом (примерный код, рабочий):
#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, придется выключать.
Комментариев нет:
Отправить комментарий