Попыталась изменить рисунок на рабочем столе с использованием функции SystemParametersInfo:
char filename[15];
strcpy(filename,"D:\Lab1.bmp");
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,&filename,SPIF_SENDWININICHANGE);
DWORD dwError = GetLastError();
printf("LastError() = %d \n", dwError);
Ну, во-первых, С++ это не Дельфи, обратный слэш должен быть двойным... А во-вторых (насколько я помню) ты можешь поменять картинку только на тот файл, который хранится там же, где все остальные картинки десктопов Windows... У меня получилось вот так:
#include <tchar.h>
...
::SystemParametersInfo(
SPI_SETDESKWALLPAPER,
0,
_T("C:\\WINDOWS\\Web\\Wallpaper\\my_pic.bmp"),
SPIF_SENDWININICHANGE
);
Ни о чем... Нет никакой ошибки. Ты должна брать GetLastError только, если тебе сама функция сигнализировала об ошибке (то есть, если вернулся 0):
if(::SystemParametersInfo(SPI_SETDESKWALLPAPER, 0,
_T("C:\\WINDOWS\\Web\\Wallpaper\\my_pic.bmp"),
SPIF_SENDWININICHANGE) == 0)
{
DWORD dwError = GetLastError();
printf("LastError() = %d \n", dwError);
}
то же самое для С++ builder
Пользователь может ввести полное имя рисунка, который требуется установить на рабочий стол, в Set_Desk ( компонент Edit).
//SystemParametersInfo(SPI_SETDESKWALLPAPER,0,&filename,SPIF_SENDWININICHANGE);
String filename;
filename=Set_Desk->Text;
//"D:\\WINDOWS\\Lab1.bmp"
if(::SystemParametersInfo(SPI_SETDESKWALLPAPER,0,_T(&filename),SPIF_SENDWININICHANGE) == 0)
{
DWORD dwError = GetLastError();
Control_Panel->Text=IntToStr(dwError);
}
else
Control_Panel->Text= "Change is OK!";