[c++]ustawianie tapet, @shell32.dll,-31289

0

Nie wiem czy uzyskam pozytywną odpowiedź, ale może miał ktoś wcześniej z tym styczność. Zaciekawiło mnie to jak w windowsie ustawia się tapety. Wiem już, że jeśli tapeta nie jest w BMP to jest ona kowertowana i zapisywana już w BMP tutaj:
C:\Documents and Settings\Użytkownik\Ustawienia lokalne\Dane aplikacji\Microsoft\Wallpaper1.bmp
(przynajmniej w XP)

Przy przeglądaniu zdjeć w 'Podglądzie obrazów i faksów systemu Windows' widzę też, że jest funkcja 'Ustaw jako tło pulpitu'. Względem tej nazwy przeszukałem rejestr i znalazłem ten wpis tutaj:

HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache\@shell32.dll,-31289

Nie wiem tylko jak mógłbym wywołać funkcję w c++, ustawiającą tło pulpitu (przekazując moją nazwę tapety). Bo funkcję dla ustawiania tapet BMP czyli:

SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Nazwa, SPIF_UPDATEINIFILE || SPIF_SENDWININICHANGE);

znam - chodzi mi jednak o ustawianie różnego rodzaju plików graficznych (bmp, jpg, gif, png, itp) bez konwersji (zostawię to Windowsowi :P)...

Jeżeli nie ma takiej możliwości proszę o krótkie skwitowanie mojego postu, a będe wiedział, że poszukiwania na google są z góry przewidziane na niepowodzenie.

0

dzięki bardzo :]

0

A ja mam pytanie... poczytałem tą stronkę itam jest informacja, że nalezy załączyć plik shlobj.h, no i po kompilacji wyskakują błędy w tym akurat module, takie jak np.
[C++ Error] shobjidl.h(2193): E2238 Multiple declaration for 'FOLDERSETTINGS'
[C++ Error] shobjidl.h(8095): E2238 Multiple declaration for 'DESKBANDINFO'
[C++ Error] shlobj.h(1422): E2238 Multiple declaration for 'FVSHOWINFO'

itp. czy ktoś może wiedzieć, jak to naprawić? Tzn. wiem co oznacza błąd Multiple declaration, ale nie mam odwagi zmieniac cokolwiek w tych modułach...

//dodam jeszcze, że środowisko to C++ Builder 6

0
id02009 napisał(a)

A ja mam pytanie... poczytałem tą stronkę itam jest informacja, że nalezy załączyć plik shlobj.h, no i po kompilacji wyskakują błędy w tym akurat module, takie jak np.
[C++ Error] shobjidl.h(2193): E2238 Multiple declaration for 'FOLDERSETTINGS'
[C++ Error] shobjidl.h(8095): E2238 Multiple declaration for 'DESKBANDINFO'
[C++ Error] shlobj.h(1422): E2238 Multiple declaration for 'FVSHOWINFO'

Zmień:

typedef struct
{

 ...

} FVSHOWINFO, *LPFVSHOWINFO;

na:

typedef struct FVSHOWINFO
{

 ...

}*LPFVSHOWINFO;

Z resztą robisz podobnie.

0

Używasz VCL ?

#define NO_WIN32_LEAN_AND_MEAN
#include <vcl.h>
#include <shlobj.h>

Dodam jeszcze, że Biblioteki Visuala i Borlandowskie posiadają deklaracje interfejsu IActiveDesktop, ale GCC już nie, nie wiem jak inne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1