Page 1 sur 2
Changer L'image de fond du bureau !
Publié : lun. 01/janv./2007 14:09
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 !
Publié : lun. 01/janv./2007 18:58
par Backup
.......
Publié : mar. 02/janv./2007 11:50
par brossden
Merci Dobro
La solution du Soldat Inconnu est top !
La seconde utilise "IsAdmin" inconnu pour ma machine !!
Publié : mar. 02/janv./2007 20:38
par Backup
brossden a écrit :La seconde utilise "IsAdmin" inconnu pour ma machine !!
c'est pas la Droopy lib ça ?

Publié : dim. 07/janv./2007 12:54
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
Publié : dim. 07/janv./2007 14:07
par Backup
Merci ! je l'ai recup pour mon Forum de Codes

Publié : dim. 07/janv./2007 17:15
par Anonyme2
brossden
elle est ou la fonction de ton code : GetFileType
Publié : lun. 08/janv./2007 18:54
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
Publié : lun. 08/janv./2007 19:39
par Anonyme2
Dommage que l'installer soit en anglais, ça me chier, j'espère que sa doc est en français
Re: Changer L'image de fond du bureau !
Publié : jeu. 04/oct./2012 13:35
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...)
Re: Changer L'image de fond du bureau !
Publié : jeu. 04/oct./2012 15:32
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)
Re: Changer L'image de fond du bureau !
Publié : jeu. 04/oct./2012 16:29
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
Re: Changer L'image de fond du bureau !
Publié : jeu. 04/oct./2012 16:53
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.
Re: Changer L'image de fond du bureau !
Publié : jeu. 04/oct./2012 17:19
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 ?
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 
Re: Changer L'image de fond du bureau !
Publié : jeu. 04/oct./2012 17:53
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()