actualiser le bureau

Programmation d'applications complexes
Aranoth
Messages : 293
Inscription : sam. 24/janv./2004 12:00
Localisation : Toulouse (31)
Contact :

actualiser le bureau

Message par Aranoth »

salut,

j'essaye de changer mon fond d'écran, mais la fonction de Regis marche mal, alors j'ai fait ca:

Code : Tout sélectionner

Procedure SetWallpaper(FileName.s)
  ; style = 0 : centrer
  ; style = 2 : étirer
  Style.s = "2"
  Style2.s="0"
  RegOpenKeyEx_(#HKEY_CURRENT_USER, "Software\Microsoft\Internet Explorer\Desktop\General\", #NULL, #KEY_ALL_ACCESS, @hKey)
  RegSetValueEx_(hKey, "WallpaperStyle", #NULL, #REG_SZ, @Style, Len(Style) + 1 )
  RegSetValueEx_(hKey, "TileWallpaper", #NULL, #REG_SZ, @Style2, Len(Style) + 1 )
  RegSetValueEx_(hKey, "Wallpaper", #NULL, #REG_SZ, FileName, Len(Style) + 1 )
  RegSetValueEx_(hKey, "BackupWallpaper", #NULL, #REG_SZ, FileName, Len(Style) + 1 )
  
  SystemParametersInfo_(#SPI_SETDESKWALLPAPER, 0, FileName, #SPIF_UPDATEINIFILE | #SPIF_SENDWININICHANGE)

  
  RegOpenKeyEx_(#HKEY_USERS, ".DEFAULT\Control Panel\Desktop\", #NULL, #KEY_ALL_ACCESS, @hKey)
  RegSetValueEx_(hKey, "WallpaperStyle", #NULL, #REG_SZ, @Style, Len(Style) + 1 )
  RegSetValueEx_(hKey, "TileWallpaper", #NULL, #REG_SZ, @Style2, Len(Style) + 1 )
  RegSetValueEx_(hKey, "Wallpaper", #NULL, #REG_SZ, FileName, Len(Style) + 1 )
  RegSetValueEx_(hKey, "BackupWallpaper", #NULL, #REG_SZ, FileName, Len(Style) + 1 )
  
  SystemParametersInfo_(#SPI_SETDESKWALLPAPER, 0, FileName, #SPIF_UPDATEINIFILE | #SPIF_SENDWININICHANGE)

  
  RegOpenKeyEx_(#HKEY_CURRENT_USER, "Control Panel\Desktop\", #NULL, #KEY_ALL_ACCESS, @hKey)
  RegSetValueEx_(hKey, "WallpaperStyle", #NULL, #REG_SZ, @Style, Len(Style) + 1 )
  RegSetValueEx_(hKey, "TileWallpaper", #NULL, #REG_SZ, @Style2, Len(Style) + 1 )
  RegSetValueEx_(hKey, "Wallpaper", #NULL, #REG_SZ, FileName, Len(Style) + 1 )
  RegSetValueEx_(hKey, "BackupWallpaper", #NULL, #REG_SZ, FileName, Len(Style) + 1 )

  SystemParametersInfo_(#SPI_SETDESKWALLPAPER, 0, FileName, #SPIF_UPDATEINIFILE | #SPIF_SENDWININICHANGE)
  
  
EndProcedure
mais rien a faire, je trouve pas comment simuler le Click Droit > Actualiser...

Car là le fond d'écran se change mais le bureau s'actualise pas...
Si qq sais...

merci
Débutant en programmation, notament en C++ ?
Vous souhaitez apprendre ?
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Bonjour Aranoth

J'ai testé ton code sans y avoir regardé plus que cela en rajoutant simplement la ligne :
"SetWallpaper("c:\windows\win98.bmp")"
Tout fonctionne trés bien sous windows98 !! Et sans aucune réactualisation !
Denis

Bonne Jounée à tous
Aranoth
Messages : 293
Inscription : sam. 24/janv./2004 12:00
Localisation : Toulouse (31)
Contact :

Message par Aranoth »

mais pas sur mon PC :?

pourtant j'ai Win98

quand je fait Click Droit > Propriétés, je vois bien que le wallpaper à changé dans la liste, mais je doit ensuite appuyer sur F5 ou Actualiser pour que cela se change...
C'est bizarre...

Mon logiciel met en mémoire dans un fichier txt deux fonds d'écrans.
Puis l'interface permet de les changer, et après choisir celui que l'on veut afficher.

Code : Tout sélectionner

Case 5
     SetWallpaper(User1$)
Case 6
    SetWallPaper(User2$)
Mais rien à faire sans actualiser, sur mon pc

:?
Débutant en programmation, notament en C++ ?
Vous souhaitez apprendre ?
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Bonjour

Tu peux essayer le code qui suit s'il te plait et me donner le résultat !

Code : Tout sélectionner


; PureBasic Visual Designer v3.90 build 1360
;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Radio_0
  #Radio_1
  #Radio_2
  #ButtonImage_0
  #ButtonImage_1
EndEnumeration

;- Image Plugins

;- Image Globals
Global Image0
Global Image1

;- Catch Images
Image0 = CatchImage(0, ?Image0)
Image1 = CatchImage(1, ?Image1)

;- Images
DataSection
Image0:
IncludeBinary "C:\WINDOWS\Nuages.bmp"
Image1:
IncludeBinary "C:\WINDOWS\Installation.bmp"
EndDataSection

Procedure SetWallpaper(FileName.s) 
  
  Style2.s="0" 
  If GetGadgetState(#Radio_0)=1
    Style.s = "0" 
    
  ElseIf GetGadgetState(#Radio_1)=1
    Style.s = "1" 
    
  ElseIf GetGadgetState(#Radio_2)=1
    Style.s = "2" 
    
  EndIf
  
  RegOpenKeyEx_(#HKEY_CURRENT_USER, "Control Panel\Desktop\", #Null, #KEY_ALL_ACCESS, @hKey) 
  RegSetValueEx_(hKey, "WallpaperStyle", #Null, #REG_SZ, @Style, Len(Style) + 1 ) 
  RegSetValueEx_(hKey, "TileWallpaper", #Null, #REG_SZ, @Style2, Len(Style) + 1 ) 
  RegSetValueEx_(hKey, "Wallpaper", #Null, #REG_SZ, FileName, Len(Style) + 1 ) 
  RegSetValueEx_(hKey, "BackupWallpaper", #Null, #REG_SZ, FileName, Len(Style) + 1 ) 
  SystemParametersInfo_(#SPI_SETDESKWALLPAPER, 0, FileName, #SPIF_UPDATEINIFILE | #SPIF_SENDWININICHANGE) 
  
EndProcedure

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 560, 548, 269, 223,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "New window ( 0 )")
    If CreateGadgetList(WindowID())
      OptionGadget(#Radio_0, 25, 15, 115, 20, "Centré")
      OptionGadget(#Radio_1, 25, 45, 115, 20, "Mosaïque")
      OptionGadget(#Radio_2, 25, 75, 115, 20, "Étirer")
      ButtonImageGadget(#ButtonImage_0, 20, 105, 100, 100, Image0)
      ButtonImageGadget(#ButtonImage_1, 146, 105, 100, 100, Image1)
      
    EndIf
  EndIf
EndProcedure

Open_Window_0()
SetGadgetState(#Radio_0,1)

Repeat
  
  Event = WaitWindowEvent()
  
  If Event = #PB_EventGadget
    GadgetID = EventGadgetID()
    
    If GadgetID = #ButtonImage_0
      SetWallpaper("c:\windows\nuages.bmp") 
    ElseIf GadgetID = #ButtonImage_1
      SetWallpaper("c:\windows\installation.bmp") 
    EndIf
    
  EndIf
  
Until Event = #PB_EventCloseWindow

End


Denis

Bonne Jounée à tous
Aranoth
Messages : 293
Inscription : sam. 24/janv./2004 12:00
Localisation : Toulouse (31)
Contact :

Message par Aranoth »

Ca marche :)

merci beaucoup :wink:
Débutant en programmation, notament en C++ ?
Vous souhaitez apprendre ?
Répondre