Hallo, wenn der
Active-Dektop von Windows aktiviert ist, funktioniert das Beispiel mit SystemParametersInfo nicht.
Folgendes funktioniert immer:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| uses ComObj, // For CreateComObject and Initialization/Finalization of COM ShlObj; // For IActiveDesktop
{ The CLASS ID for ActiveDesktop is not defined in ShlObj, while the IID is so we define it here. } const CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';
procedure ChangeWallPaper(const aBildname:String); var wStr:PWideChar; aDesk:IActiveDesktop; begin wStr:=AllocMem(MAX_PATH*2); try StringToWideChar(aBildName, wStr, MAX_PATH*2); aDesk:=CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop; aDesk.SetWallpaper(wStr, 0); aDesk.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE); finally FreeMem(wStr); end; // try end; // ChangeWallPaper |
_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)