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

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

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

Beitrag 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?
Zuletzt geändert von Tsuki-Namida am 26.01.2006 22:24, insgesamt 1-mal geändert.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

Hey das ist super Danke:)

Ich habe nichts gefunden wie ich das Aktuelle Wallpaper heraus finde....
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Der Registry-schlüssel ist
HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper

Wie du ihn ausliest findest du sicher.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

Wo und wie sucht man da ambesten?....
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag 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")
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

hmmm ich bekomme ein "Error Opening Key" ausgegeben....
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag 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")
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

Achso geht das .... jetzt weis ich auch was ich falsch gemacht habe... danke dir :) :allright:
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag 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?
Antworten