Seite 1 von 3

Walpaper >>>-Code überarbeitet-<<<

Verfasst: 22.01.2006 19:08
von Tsuki-Namida
Hallo,
Ich möchte Herausfinden was für ein Hontergrungbild sich auf meinem Desktop befindet. Ich möchte es aber auch ändern können mit meinem Programm... wie kann ich das am besten machen?

Verfasst: 22.01.2006 19:09
von DarkDragon

Verfasst: 22.01.2006 19:25
von Tsuki-Namida
Hey das ist super Danke:)

Ich habe nichts gefunden wie ich das Aktuelle Wallpaper heraus finde....

Verfasst: 22.01.2006 19:34
von Macros
Der Registry-schlüssel ist
HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper

Wie du ihn ausliest findest du sicher.

Verfasst: 22.01.2006 19:50
von Tsuki-Namida
Wo und wie sucht man da ambesten?....

Verfasst: 22.01.2006 19:59
von Macros
Zum Beispiel mal "Registry auslesen" eingeben,
dann findet man dass hier:

Code: Alles auswählen

Procedure.s ReadRegKey(OpenKey.l,SubKey.s,ValueName.s)
  hKey.l=0
  keyvalue.s=Space(255)
  datasize.l=255
 
  If RegOpenKeyEx_(OpenKey,SubKey,0,#KEY_READ,@hKey)
    keyvalue="Error Opening Key"
  Else
    If RegQueryValueEx_(hKey,ValueName,0,0,@keyvalue,@datasize)
      keyvalue="Error Reading key"
    Else 
      keyvalue=Left(keyvalue,datasize-1)
    EndIf
    RegCloseKey_(hKey)
  EndIf
 
  ProcedureReturn keyvalue
EndProcedure 

Debug ReadRegKey(#HKEY_CURRENT_USER, "Software\Microsoft\Multimedia\Sound Mapper", "Playback")

Verfasst: 22.01.2006 20:29
von Tsuki-Namida
hmmm ich bekomme ein "Error Opening Key" ausgegeben....

Verfasst: 22.01.2006 20:39
von DarkDragon
Magix-Soft <Kain> hat geschrieben:hmmm ich bekomme ein "Error Opening Key" ausgegeben....

Code: Alles auswählen

Procedure.s ReadRegKey(OpenKey.l,SubKey.s,ValueName.s)
  hKey.l=0
  keyvalue.s=Space(255)
  datasize.l=255
 
  If RegOpenKeyEx_(OpenKey,SubKey,0,#KEY_READ,@hKey)
    keyvalue="Error opening key."
  Else
    If RegQueryValueEx_(hKey,ValueName,0,0,@keyvalue,@datasize)
      keyvalue="Error reading key."
    Else
      keyvalue=Left(keyvalue,datasize-1)
    EndIf
    RegCloseKey_(hKey)
  EndIf
 
  ProcedureReturn keyvalue
EndProcedure

Debug ReadRegKey(#HKEY_CURRENT_USER, "Control Panel\Desktop", "Wallpaper")

Verfasst: 22.01.2006 20:47
von Tsuki-Namida
Achso geht das .... jetzt weis ich auch was ich falsch gemacht habe... danke dir :) :allright:

Verfasst: 23.01.2006 16:16
von Tsuki-Namida
So da ich ja ein Hintergrund Bild setzen möchte habe ich diese Prozedure genommen:

Code: Alles auswählen

Procedure SetWallpaper(Val.s)
  Shared DesktopPreferences_Lib
  ProcedureReturn CallFunction(DesktopPreferences_Lib, "SHSetValueA", #HKEY_CURRENT_USER, "Control Panel\Desktop", "Wallpaper", #REG_SZ, Val, Len(Val)+1)
EndProcedure
Um ein Wallpaper zu setzen muss ich doch "SetWallpaper(C:\Wallpaper.jpg)" machen oder? gut ich habe es mit einem String gemacht... "SetWallpaper(String$)" nur ich bekomme einen Error "Invalid memory access."
in der Zeile:
ProcedureReturn CallFunction(DesktopPreferences_Lib, "SHSetValueA", #HKEY_CURRENT_USER, "Control Panel\Desktop", "Wallpaper", #REG_SZ, Val, Len(Val)+1)

Was habe ich da falsch gemacht?