Autor |
Beitrag |
Terra23
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: 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
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
      
Beiträge: 408
Windows
VS2010 C#
|
Verfasst: 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
|
Verfasst: Do 24.04.03 08:37
PSDK hat folgendes geschrieben: | 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:
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 
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: 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 
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: 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
      
Beiträge: 408
Windows
VS2010 C#
|
Verfasst: 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 
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: 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
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: 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 
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: Sa 26.04.03 19:43
Ich habe jetzt mal anstelle von nil den Pfad des Bitmaps angegeben und dann bekomme ich folgende Meldung:
Quelltext 1:
| [Error] XChange_Unit.pas(119): Incompatible types: 'String' and 'Pointer' |
_________________ Hasta La Victoria Siempre
|
|
wulfskin
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: So 27.04.03 02:09
Es wird ein PChar erwartet und die übergibst einen String, das kann nicht gehen! Antwort: Typecast:
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
|
Verfasst: So 27.04.03 09:53
Titel: sehr
Bild setzen:
Quelltext 1: 2: 3:
| SystemParametersInfo(SPI_SETDESKWALLPAPER,0, pchar(ExtractFilePath(paramstr(0)) + 'pic02.bmp'), SPIF_SENDWININICHANGE); |
gesetztes Bild entfernen:
Quelltext 1: 2:
| SystemParametersInfo(SPI_SETDESKWALLPAPER,0, pchar(''),SPIF_SENDWININICHANGE); |
Originalhintergrundbild wiederherstellen:
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 
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: 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.

_________________ Hasta La Victoria Siempre
|
|