A Alpha II Medlem sedan maj 2000 2 993 inlägg Frågan 26 aug. 2003 15:35 #1 Hur ändrar jag bakgrundsbilden i Windows XP? Inget verkar fungera. Det närmaste jag har kommit är att bakgrundsbilden försvunnit när jag använt funktionen SYtemParametersInfo(). Hittade en kod som använde com men programmet kraschade med den. :(
A Alpha II Medlem sedan maj 2000 2 993 inlägg Jag har läst att man måste använda com i nyare windows. :OO
Försöker med en värdelös exempel kod med massa onödiga variabler och saknade viktiga bitar för att fungera.
Får meddelandet
Exception EIntfCastError in module program.exe at 000554B5
Interface not supported.
function ChangeWallpaper(aFile: String): Boolean;
const
CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';
var
hObj: IUnknown;
ADesktop: IActiveDesktop;
str: string;
wstr: PWideChar;
begin
CoInitializeEx(nil,0);
hObj := CreateComObject(CLSID_ActiveDesktop);
ADesktop := hObj as IActiveDesktop; // IActiveDesktop blir markerat när jag får exceptionet
wstr := AllocMem(MAX_PATH);
try
StringToWideChar(aFile, wstr, MAX_PATH);
ADesktop.SetWallpaper(wstr, 0);
ADesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
finally
FreeMem(wstr);
end;
end;
J jt Medlem sedan juni 2000 350 inlägg SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, pChar('Bubblor.bmp'), SPIF_SENDCHANGE);
Detta borde fungera om det nu inte är något särskilt med XP. Det verkar inte finnas något undantag för XP enlig dokumantationen.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/systemparametersinfo.asp
A Alpha II Medlem sedan maj 2000 2 993 inlägg Har testat det och det enda som verkar hända är att bakgrunsbilden tas bort. Kräver funktionen att det är en bmp fil?
A Alpha II Medlem sedan maj 2000 2 993 inlägg Ja det funkade :) Konverterade min jpg fil till en bmp fil och nu funkar det hur bra som helst :D