Hi,
ich wollte mal für eins meiner Proggies (ein Kalenderprogramm, um genau zu sein) die Möglichkeit haben, die Bilder als Desktophintergrund zu nutzen. Dabei bin ich auf folgende Funktion gestossen:
if not SystemParametersInfo(SPI_SETDESKWALLPAPER,
0,
PChar(AFilename),
SPIF_SENDCHANGE OR SPIF_UPDATEINIFILE) then
RaiseLastOSError;
Hab das dann eingebaut, das sieht dann wie folgt aus:
procedure TForm1.alsHintergrund1Click(Sender: TObject);
begin
JPEGtoBMP(ExtractFilePath(Applicaiton.ExeName)+'gfx\'+IntToStr(year)+'\'+IntToStr(month)+'.bmp','C:\Windows\om_wallpaper.bmp');
if not SystemParametersInfo(SPI_SETDESKWALLPAPER,
0,PChar('C:\Windows\om_wallpaper.bmp'),
SPIF_SENDCHANGE OR SPIF_UPDATEINIFILE) then
RaiseLastOSError;
end;
Dann der Testlauf, lief alles Super, das Bild wurde umgewandelt (Die Function hab ich auch im Internet gefunden) und dann als hintergrund gesetzt.
Als ich dann aber die Exe nicht über Run sondern vom Explorer aus gestartet hab kam dann beim ausführen der Procedure der Fehler "Eine Betriebssystemfunktion war fehlerhaft" (oder so ähnlich). Das Bild wurde zwar umgewandelt, konnte aber einfach nicht gesetzt werden.
Bei Versuchen mit direkter Registryänderung blieb alles still, d.h. die Registry hat sich gar nicht verändert.
Hat jemand ne Idee wie man das Lösen könnte. Das Problem trat auf allen unseren Windowsversionen (98 und ME) auf.
Oder hat jemand ein kleines Proggie, das einen bildpfad als parameter nimmt und dann das bild als hintergrund setzt, geschrieben und könnte es mir geben?
Bitte um schnelle Antwort.
bizzl
bizzl Gast |