2017-02-11 3 views
-1

Как забавный проект Я хочу воссоздать Матричный дождь для фона моего ноутбука. Я посмотрел, как сделать дождь Матрицы, и у вас много идей, как это сделать, но я ничего не нашел при изменении или настройке фонового рисунка рабочего стола. Итак, это мой вопрос. Как программно изменить фон рабочего стола? Я бы предпочел использовать C или C++ для этого, любая помощь очень благодарна!Изменение фонового рисунка рабочего стола программно

+0

http://superuser.com/questions/153075/setting-an-animated-gif-as-the-desktop-background-on-windows-7 – user463035818

+0

Некоторые фокусы с помощью [SystemParametersInfo] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms724947(v=vs.85).aspx) - это то, как я видел это в прошлом. Поразите некоторые google-fu и посмотрите, что вы найдете. – WhozCraig

ответ

2

Некоторые выдержки из одной из моих программ:

В Windows 7, есть только один файл обоев в системе. Поэтому мы сохраняем текущие обои во временном файле и заменяем обои нашим изображением. Позже мы восстановить исходный файл:

// Get the system's wallpaper filename from the registry 
GetRegKeyStrHK(HKEY_CURRENT_USER, "Control Panel\\Desktop","WallPaper", szFilename, sizeof(szFilename)); 

// Now copy that file to a temporary file 
CopyFile(szFilename, "C:\\myTmpWallpaper.bmp",FALSE); 

// Then tell the system to use a new file (it will copy it to the old filename) 
SystemParametersInfo (SPI_SETDESKWALLPAPER, 0, (LPSTR) szMyDesktopImage, 0); 

Функция GetRegKeyStrHK() от моей библиотеки, и он получает значение (обои файл) из реестра.


int GetRegKeyStrHK (HKEY hK, const char *szRoot, const char *szName, char *szValue, int iValueSize) 
{ 
    HKEY hkResult; 
    int iKeyType, bufsize, result; 

    if (RegOpenKeyEx(hK, szRoot, 0, KEY_READ, &hkResult) 
       != ERROR_SUCCESS) return(FALSE);  // no such key 

    bufsize=iValueSize; 
    result= RegQueryValueEx(hkResult,szName,0, &iKeyType, (BYTE *)szValue, &bufsize); 
    RegCloseKey (hkResult); 

    if (result != ERROR_SUCCESS) return(FALSE);   // no such name/value pair or buffer too small 
    return (TRUE); 
} 
Смежные вопросы