Autor Beitrag
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Mi 23.04.03 22:32 
Hi @ All.

Sagt mal, wird das Wallpaper in der Registry nur in Windows98 unter Control Panel\Desktop\Wallpaper abgelegt oder ist das in jedem Windows so? Ich habe ein Programm geschrieben, daß auf diesen Schlüssel zugreift und es läuft bei mir wunderbar. Jedoch läuft es bei meinem Lehrer nicht, der hat XP.

Oder funzt einfach nur der Befehl

ausblenden Quelltext
1:
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil, SPIF_SENDWININICHANGE)					


unter XP etc. nicht?

Wäre euch für Hilfe echt dankbar.

Grüße, Alex..

_________________
Hasta La Victoria Siempre


Zuletzt bearbeitet von Terra23 am Di 03.06.03 19:01, insgesamt 1-mal bearbeitet
TheNeon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 408

Windows
VS2010 C#
BeitragVerfasst: Do 24.04.03 00:38 
also ich hab Win2k, das ist ja sehr verwandt mit WinXP und da hab ich eben für dich nachgesehen und der Wallpaper wird gespeichert unter:

Schlüssel:
HKEY_CURRENT_USER\Control Panel\Desktop

Zeichenfolge:
Wallpaper


.... musst also ne Abfrage nach dem System machen und dann dementsprechend umstellen
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 24.04.03 08:37 
PSDK hat folgendes geschrieben:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
BOOL SystemParametersInfo(
  UINT uiAction,
  UINT uiParam,
  PVOID pvParam,
  UINT fWinIni
);

Im Fall von SPI_SETDESKWALLPAPER muss pvParam der Name der Bitmapdatei sein. Setzt du diesen Wert auf NIL, wie dein Quellcode zeigt:
ausblenden Quelltext
1:
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil, SPIF_SENDWININICHANGE)					

dann wird das vorhandene Hintergrundbild entfernt:
PSDK hat folgendes geschrieben:
Sets the desktop wallpaper. The value of the pvParam parameter determines the new wallpaper. To specify a wallpaper bitmap, set pvParam to point to a null-terminated string containing the name of a bitmap file. Setting pvParam to "" removes the wallpaper. Setting pvParam to SETWALLPAPER_DEFAULT or NULL reverts to the default wallpaper.

Dieser Weg sollte unter allen Windows-Versionen funktionieren und ist daher, IMHO, dem Registry-Zugriff erst einmal vorzuziehen.
Terra23 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Do 24.04.03 19:29 
Nein, eigentlich nicht.

Bei mir klappt das so:

Mein Tool liest den Pfad des Wallpaper aus einem Label aus, setzt den Schlüssel in der Registry (dein Schlüssel stimmt übrigens mit meinem überein) und aktualisiert das Wallpaper und zwar mit eben diesem Code:

Zitat:

Code:

SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil, SPIF_SENDWININICHANGE)


Ich weiß zwar, was du meinst (nil entfernen und den Pfad angeben), aber warum geht es bei mir so, ohne das das Wallpaper entfernt wird?

Kannst du mir das sagen? Soll natürlich nicht heißen, daß ich deinen Vorschlag nicht zu Rate ziehen werde. ;-)

Grüße..

_________________
Hasta La Victoria Siempre
Terra23 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Fr 25.04.03 23:04 
Ich habe mal drüber nachgedacht und in der einen Antwort neulich stand auch nicht nil sondern die Pfadangabe. Kann es sein, daß es deshalb bei meinem Lehrer nicht geht?

_________________
Hasta La Victoria Siempre
TheNeon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 408

Windows
VS2010 C#
BeitragVerfasst: Sa 26.04.03 02:05 
Terra23 hat folgendes geschrieben:
Ich habe mal drüber nachgedacht und in der einen Antwort neulich stand auch nicht nil sondern die Pfadangabe. Kann es sein, daß es deshalb bei meinem Lehrer nicht geht?


ich kenne mich mit diesem Befehl noch nicht so aus, aber ich meine, wenn du einen Wallpaper setzt musst du Windows doch sagen, welchen er nehmen soll, oder?!? Eigentlich müsste anstatt dem NILL eine Pfadangabe rein ....... die 0 gibt meines wissens die Streckung, Titelung oder so an :(
Terra23 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Sa 26.04.03 12:40 
Wenn ich hier mit Renovieren für heute fertig bin, schaue ich mir mal mein Programm von vorne an. Ich habe neulich ja mal gefragt, wie ich das Wallpape ändere. Da hat Popov in der FAQ einen Beitrag zu und das benutzt er nil, ich denke aber, daß liegt daran, daß er eine allgemeine Prozedur dafür entwickelt hat, um die Wallpaper zu ändern; wie gesagt, ich bin da relativ unbeholfen was z.B. den Befehl nil angeht, aber ich versuche es mal heute Abend, in dem ich da den Pfad reinsetze. Dennoch: Bei mir steht nil und das Tool wechselt das Wallpaper wie gewünscht und setzt es nicht auf leer. Liegt vielleicht auch daran, daß ich vorher in die Registry gehe und den Key überschreiben lasse, oder?

Naja, ich kümmere mich nachher darum.

_________________
Hasta La Victoria Siempre
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Sa 26.04.03 12:42 
Terra23 hat folgendes geschrieben:
Ich habe mal drüber nachgedacht und in der einen Antwort neulich stand auch nicht nil sondern die Pfadangabe. Kann es sein, daß es deshalb bei meinem Lehrer nicht geht?
PSDK hat folgendes geschrieben:
Sets the desktop wallpaper. The value of the pvParam parameter determines the new wallpaper. To specify a wallpaper bitmap, set pvParam to point to a null-terminated string containing the name of a bitmap file. Setting pvParam to "" removes the wallpaper. Setting pvParam to SETWALLPAPER_DEFAULT or NULL reverts to the default wallpaper.
Zu deutsch: Setze für den dritten Parameter den Pfad des Bitmaps für einen neuen Hintergrund oder nil um den Hintergrund zu entfernen.
TheNeon hat folgendes geschrieben:
die 0 gibt meines wissens die Streckung, Titelung oder so an
Oder so ist gut ;)! Der Parameter wird gar nicht benutzt, deshalb ist er 0.

Gruß wulfskin!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
Terra23 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Sa 26.04.03 19:43 
Ich habe jetzt mal anstelle von nil den Pfad des Bitmaps angegeben und dann bekomme ich folgende Meldung:

ausblenden Quelltext
1:
[Error] XChange_Unit.pas(119): Incompatible types: 'String' and 'Pointer'					

_________________
Hasta La Victoria Siempre
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: So 27.04.03 02:09 
Es wird ein PChar erwartet und die übergibst einen String, das kann nicht gehen! Antwort: Typecast:
ausblenden Quelltext
1:
  SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, PChar(Pfad), SPIF_SENDWININICHANGE)					

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 27.04.03 09:53 
Titel: sehr
Bild setzen:
ausblenden Quelltext
1:
2:
3:
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,
  pchar(ExtractFilePath(paramstr(0)) + 'pic02.bmp'),
  SPIF_SENDWININICHANGE);

gesetztes Bild entfernen:
ausblenden Quelltext
1:
2:
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,
  pchar(''),SPIF_SENDWININICHANGE);

Originalhintergrundbild wiederherstellen:
ausblenden Quelltext
1:
2:
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,
  nil,SPIF_SENDWININICHANGE);

Das war übrigens auch mein Denkfehler! Im PSDK heißt es ja recht eindeutig
Zitat:
Setting pvParam to "" removes the wallpaper. Setting pvParam to SETWALLPAPER_DEFAULT or NULL reverts to the default wallpaper.

Will man also das von einem selbst gesetzte Hintergrundbild wieder entfernen, muss man pchar('') nehmen. Will man das ursprüngliche Originalhintergrundbild wiederherstellen, benutzt man nil.

Unter Win98 habe ich übrigens bemerkt, dass der Aufruf von nil nur funktioniert, wenn man vorher ein Hintergrundbild eingestellt hatte. Ansonsten passiert dabei nichts.

Gruß.
Terra23 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: So 27.04.03 14:58 
Man, man. Vielleicht sollte ich nicht immer Beiträge lesen, wenn ich tierisch müde bin, dann übersieht man so leicht einiges. Danke für eure Beiträge. Es funktioniert, in dem ich einfach PChar davor setze. :-)

:beer:

_________________
Hasta La Victoria Siempre