Entwickler-Ecke

Windows API - Warum geht mein Programm nur in Delphi?


Prinzz - Mo 15.07.02 01:14
Titel: Warum geht mein Programm nur in Delphi?
Hallo Leute!

Ich hab da mal ne Frage:

Ich hab ein Programm geschrieben, das per Zufall ein Bild aus einem Verzeichnis auswählt und dann als Wallpaper auswählt:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.setwallpaper(BMPFileName : String; Tile, Stretch : boolean ); 
var reg : TRegIniFile; 
begin 
  reg := TRegIniFile.Create('Control Panel\Desktop' ); 
  with reg do begin 
    WriteString('','Wallpaper', BMPFileName); 
    if (Tile)then 
 WriteString('','TileWallpaper', '1') 
    else 
 WriteString('','TileWallpaper', '0'); 
    if (Stretch) then 
 WriteString('','WallpaperStyle', '2') 
    else 
 WriteString('','WallpaperStyle', '0'); 
  end; 
  reg.Free; 
 SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, pChar(BMPFileName), SPIF_SENDCHANGE or SPIF_UPDATEINIFILE); 
end;


Das geht auch wunderbar solange ich in Delphi F9 drücke oder im Menü Start - Start auswähle, aber sobald ich das Programm über die compilierte EXE starte, muss ich auf dem Desktop erst noch F5 drücken um das Bild zu aktualisieren...
Wie kann das sein, das der da Unterschiede reinbaut? Ich bin total verzweifelt, kann man da überhaupt was ändern?

Bitte helft mir schnell!!!!

Schon mal Danke im Vorraus, Tobi


wurzlsepp - Mo 15.07.02 13:21

Bei mir gehts ( Delphi 4, win98)...


Prinzz - Di 16.07.02 11:00

Ich hab Delphi 6 Prof. und Windows 98... bei mir aktualisiert er das Hintergrundbild nicht, obwohl er es geändert hat, wenn ich das Programm in Delphi ausführe macht ers...


crip - Di 16.07.02 18:31

drueckst du denn auf delphi minimieren um desktop zu sehen, weil wahrscheinlich aktulisier dein windows desktopwenn du auch minimieren drueckst


Prinzz - Di 16.07.02 19:54

Nee, Delphi füllt ja nicht den ganzen Bildschirm aus (jedenfalls bei mir) und ich kann zwischen den Fenstern den Hintergrund sehen, der wechselt direkt wenn ich den Knopf drücke wenn ichs in Delphi ausführe, anders erst, wenn ich den Desktop anklicke und F5 drücke...


SpeedyGTD - So 21.07.02 12:48

Wie wärs wenn du mit Windows.keybd_event(Vk_F5,0,0,0) den Desktop mit Code aktualisierst. So würde ich das machen. :D

Mfg SpeedyGTD