Changer L'image de fond du bureau !

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Changer L'image de fond du bureau !

Message par brossden »

Bonjour
Avant que le ancien site soit en panne j'ai pu lire sur un post qu'il étais possible sous PureBasic de changer l'iamge de fond du bureau, je me rappelle bien qu'il y a une variable à modifier dans la base de registre mais j'ai perdu la méthode pour rendre active cette modification une fois faite ...
Y a t'il ici une bonne âme qui ait une meuilleur mémoire que moi, ou qui connaisse la procedure à suivre.
Merci à vous et

BONNE ANNEE A TOUS !
Denis

Bonne Jounée à tous
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

.......
Dernière modification par Backup le lun. 18/août/2014 17:13, modifié 1 fois.
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Merci Dobro

La solution du Soldat Inconnu est top !

La seconde utilise "IsAdmin" inconnu pour ma machine !!
Denis

Bonne Jounée à tous
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

brossden a écrit :La seconde utilise "IsAdmin" inconnu pour ma machine !!
c'est pas la Droopy lib ça ? :)
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Ben non desolé Dobro !!

J'ai modifier le soft qui accepte maintenant divers format d'image :

Code : Tout sélectionner

Procedure SetWallpaper(FileName.s, style.s) ; style = 0 : centrer
  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 , @style, Len (style) + 1 )
  SystemParametersInfo_ ( #SPI_SETDESKWALLPAPER , 0, FileName, #SPIF_UPDATEINIFILE | #SPIF_SENDWININICHANGE )
EndProcedure

WPFileName.s = OpenFileRequester ( "Choix de l'image" , "*.*" , "All Files (*.*)|*.*" , 0, 0)
Debug GetFileType(WPFileName)

If GetFileType(WPFileName)<>"Image Wondows Bitmap"
  UseJPEGImageDecoder() : UsePNGImageDecoder() : UseTGAImageDecoder() : UseTIFFImageDecoder()
  CreateImage(1,1000,800) : LoadImage(1,WPFileName) : SaveImage(1,"c:\Windows\FondActuel.bmp",#PB_ImagePlugin_BMP)
  WPFileName.s = "c:\Windows\FondActuel.bmp" 
EndIf

If WPFileName <> ""
  SetWallpaper(WPFileName, "2" )
EndIf
Denis

Bonne Jounée à tous
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Merci ! je l'ai recup pour mon Forum de Codes :D
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

brossden

elle est ou la fonction de ton code : GetFileType
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Pour Denis !

La fonction GetFileType fait partie de la Lib Droopy !

Une version pour PB 4 de Droopy non officielle est disponible là :

http://gansta93.free.fr/droopyslib/down ... 1.31.4.zip
Denis

Bonne Jounée à tous
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Dommage que l'installer soit en anglais, ça me chier, j'espère que sa doc est en français
david
Messages : 208
Inscription : jeu. 03/févr./2005 21:10

Re: Changer L'image de fond du bureau !

Message par david »

Je souhaite modifier l'image arrière plan bureau
J'ai deux ordinateurs qui tournent sur Windows XP Pro (compte utilisateur et pas Admin)
Il y en a un pour lequel ça fonctionne parfaitement, et sur l'autre il ne modifie pas le fond d'écran
Y a il une protection éventuelle causée par une diférence de config entre les 2 ordi? et si oui comment faire?
(ca ne fonctionne pas non plus avec les logiciels de dessin, ou avec l'aperçu qui proposent une commande du genre 'utiliser comme fond d'ecran...')


j'ai utilisé:

Code : Tout sélectionner

Procedure SetWallpaper(FileName.s, Style.s)    ; style = 0 : centrer / style = 2 : étirer 
    RegOpenKeyEx_ ( #HKEY_CURRENT_USER , "Control Panel\Desktop\" , #Null , #KEY_ALL_ACCESS , @hKey)
    RegSetValueEx_ (hKey, "WallpaperStyle" , #Null , #REG_SZ , @Style, Len (Style) + 1 )
  Style = "0" 
    RegSetValueEx_ (hKey, "TileWallpaper" , #Null , #REG_SZ , @Style, Len (Style) + 1 )
    SystemParametersInfo_ ( #SPI_SETDESKWALLPAPER , 0, FileName, #SPIF_UPDATEINIFILE | #SPIF_SENDWININICHANGE )
EndProcedure 

cheminapp$=GetCurrentDirectory():cheminapp2$=cheminapp$+"outils\"
FichierParDefaut$ = cheminapp$+"dt_image.bmp"   ; Répertoire et fichier par défaut qui seront affichés
  Filtre$ = "Image (*.bmp)|*.bmp"
  Filtre  = 0    ; utiliser  par défaut le premier des trois filtres possibles
 WPFileName.s = OpenFileRequester("Choisissez une image BMP à charger", FichierParDefaut$, Filtre$, Filtre)

If WPFileName <> "" 
  SetWallpaper(WPFileName, "2" )
EndIf 
ps: j'ai essayé avec cette version car je peux me contenter d'un .BMP (et les exemples aménagés pour .JPG etc... ne fonctionnent pas meme si je met la lib...)
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Changer L'image de fond du bureau !

Message par falsam »

Bonjour david,
Pourrais tu essayer manuellement.
1 - Clic Droit sur un emplacement vide de ton bureau (Window :p)
2 - Onglet Bureau
3 - Choisi une image depuis le bouton parcourir.

Si ça ne fonctionne pas :
Sois tu es un utilisateur restreint
Sois tu as peut être un malware qu'il va falloir éliminer en mode sans échec.

Juste pour info tu peux mettre des jpeg sans lib

Code : Tout sélectionner

WallPaper.s="????"
;Exemple : WallPaper.s="D:\Images\Fonds d'écrans\073.jpg"
SystemParametersInfo_ (#SPI_SETDESKWALLPAPER, 0, WallPaper, 0)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
david
Messages : 208
Inscription : jeu. 03/févr./2005 21:10

Re: Changer L'image de fond du bureau !

Message par david »

Je pense en effet être un utilisateur restreint (je n'ai pas beaucoup d'options avec le clic droit sur le bureau, si ce n'est de réorganiser les icones ou de creer un nouveau dossier).
Je pense qu'il ne me sera pas possible de passer outre à part d'avoir un code administrateur (que je n'ai pas).

Alors, je sais qu'on va me répondre que le forum n'a pas de but de piratage, que si c'est vérouillé c'est parceque ça doit l'etre... mais j'ai promis à ma collègue que je lui mettrais la photo de ses rêves en arrière plan, et je trouve ça trop triste d'être en echec pour une image. Ils sont pas sympa chez windows, tout le monde devrait pouvoir choisir son arriere plan, même sur xp pro
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Changer L'image de fond du bureau !

Message par falsam »

Sous XP tu fermes ta session. Tu vas revenir sur la sélection d'un utilisateur.
Au lieu de sélectionner un utilisateur. Utilise la combinaison de touche Ctrl + Alt + Suppr.
Utilises comme nom d'utilisateur administrateur (ou administrator si version US)
Pas de mot de passe puis Ok.

Une fois connecté, Panneau de configuration puis Comptes d'utilisateurs.
Tu sélectionnes le compte concerné et tu modifies le type de compte. (Administrateur de l'ordinateur au lieu de Limité)

Je ne sais pas si sous XP Pro ça fonctionne, mais sous XP classique, ça fonctionne toujours.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

Re: Changer L'image de fond du bureau !

Message par Golfy »

david a écrit : Alors, je sais qu'on va me répondre que le forum n'a pas de but de piratage, que si c'est vérouillé c'est parceque ça doit l'etre... mais j'ai promis à ma collègue que je lui mettrais la photo de ses rêves en arrière plan, et je trouve ça trop triste d'être en echec pour une image. Ils sont pas sympa chez windows, tout le monde devrait pouvoir choisir son arriere plan, même sur xp pro
Celui qui t'a filé le post connait-il tes capacités de bidouillage ? :lol:

Plus sérieusement, si tu es sur un PC géré par ton entreprise, la DSI a probablement mis des GPO en place pour limiter les droits.
1) tu demandes à la DSI le droit de changer le fond d'écran
2) tu demandes à la DSI d'avoir les droits d'admin local de ton poste
3) tu t'attaques au mot de passe de l'admin avec un soft comme Cain & Abel : une fois que tu as ce mot de passe... tu fais ce que tu veux (mais parfois les GPO sont exécutés à chaque boot et écrasent donc tes modifs)

Bon courage !

PS : bonne chance pour ton plan drague :mrgreen:
Purebasic 5.30 full sous Windows XP (x86) et Win7 (64 bits), Linux Debian. Orientation réseaux, domotique
http://golfy.olympe.in/Teo-Tea/
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Changer L'image de fond du bureau !

Message par Ar-S »

@Golfy, Tu as le droit de supprimer ton numéro 3 :?
il y a assez de tuto sur le net pour ce genre de chose, pas la peine de ça sur le forum PB selon moi.

--------------------

Si tu n'as pas d'icones sur le bureau (ou peu), tu peux te faire un programme sans barre systeme avec un Canvas de la taille de ton ecran - hauteur de la barre des taches et de l'affiché.

Comme je suis en plein dans mon cropcrop, voilà qui devrait faire l'affaire.

Tu quittes avec un clique gauche ou droit.

Code : Tout sélectionner

UseJPEGImageDecoder() 


Enumeration
  #WIN
  #CANVAS
  #image
EndEnumeration



Procedure.c GetBarHeight()
  
  ; +--------------------------------------------------------------------------+
  ; | Code original de GallyHC modifié par Ar-S                                 |
  ; +--------------------------------------------------------------------------+
  
  #ABM_GETSTATE       = 4
  #ABM_GETTASKBARPOS  = 5
  
  
  Structure lNXY
    width.l
    height.l
  EndStructure
  
  Define Barre.lNXY
  Define Cadre.RECT
  Define BarreData.APPBARDATA
  
  SHAppBarMessage_(#ABM_GETTASKBARPOS, BarreData)
  SHAppBarMessage_(#ABM_GETSTATE, BarreData)
  Cadre\left   = BarreData\rc\left
  Cadre\right  = BarreData\rc\right
  Cadre\top    = BarreData\rc\top
  Cadre\bottom = BarreData\rc\bottom
  Barre\width  = Cadre\right  - Cadre\left
  Barre\height = Cadre\bottom - Cadre\top
  
  
  If Cadre\left < 1 And Cadre\top > 0 And (Barre\width > Barre\height)
    BarPos = 1 ; bas
  EndIf
  If Cadre\left < 1 And Cadre\top < 1 And (Barre\width < Barre\height)
    BarPos = 2 ; gauche
  EndIf
  If Cadre\left > 1 And Cadre\top < 1 And (Barre\width < Barre\height)
    BarPos = 3 ; haut
  EndIf
  If Cadre\left < 1 And Cadre\top < 1 And (Barre\width > Barre\height)
    BarPos = 4 ; haut
  EndIf
  
  If BarPos = 1
    HauteurBarre = Cadre\bottom - Cadre\top
    ProcedureReturn HauteurBarre
  Else
    ProcedureReturn 0
  EndIf
  
EndProcedure




Ecran_X = GetSystemMetrics_(0)
Ecran_Y = GetSystemMetrics_(1)  - GetBarHeight()

If OpenWindow(#WIN, 0, 0, Ecran_X, Ecran_Y, "WALLPAPER", #PB_Window_BorderLess)

  CanvasGadget(#CANVAS, 0, 0, Ecran_X, Ecran_Y,#PB_Canvas_DrawFocus|#PB_Canvas_ClipMouse)
  
  FichierImage$ = "E:\MULTIMEDIA\PUREBASIC\4.40\CropCrop\1700x1200.jpg"
  
  Image = LoadImage(#image, FichierImage$)
  If Image

    Limg = ImageHeight(#image)
    Himg = ImageHeight(#image)
    
    ; LSI
    If  Himg > Ecran_Y Or Limg > Ecran_X
      If Ecran_X * Himg <= Limg * Ecran_Y
        newL = Ecran_X
        newH = Himg * Ecran_X / Limg
      
      Else
        newL = Limg * Ecran_Y / Himg
        newH = Himg * Ecran_Y
      
      EndIf
    EndIf

    StartDrawing(CanvasOutput(#CANVAS))
      DrawImage(ImageID(#image), 0, 0)
    StopDrawing()
    
  Else
    MessageRequester( " Erreur ", " image introuvable " , #MB_OK  ) ;-TEST
    End
  EndIf
  
  
  
  

Repeat
  Select WaitWindowEvent()
      ; ///////////////////
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #CANVAS
          Select EventType()
            Case #PB_EventType_LeftButtonDown, #PB_EventType_RightClick
              FreeImage(#image)
              End
          EndSelect
      EndSelect
      
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #WIN
          CloseWindow(#WIN)
          Break
      EndSelect
  EndSelect
ForEver


EndIf

il te restera à centrer les images plus petites que ton écran en modifiant le DrawImage()
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre