Page 2 sur 2

Re: Changer L'image de fond du bureau !

Publié : ven. 05/oct./2012 8:19
par Golfy
Ar-S a écrit :@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.
La réponse N°3 est juste pour la réthorique... je pense que sur le forum PureBasic, il règne une certaine éthique et un certain niveau de compréhension pour pouvoir décrire toutes les possibilités ! ce n'est pas parce que tu sais que le coté obscur de la Force existe que tu dois l'employer :roll:

Cependant, si cela gêne d'autres membres, je peux enlever cette référence.

Re: Changer L'image de fond du bureau !

Publié : ven. 05/oct./2012 9:01
par david

Code : Tout sélectionner

CanvasGadget ??
J'utilise PureBasic 4.51 (impossible de mettre une autre version car pas(plus) de droits admin sur le PC pour installer un programme) , ou alors il me manque une librairie ???

Du coup je n'ai pas pu tester et je me demande si le code correspond à ça ou bien si 'ça' ne serait pas une solution:

un code qui une fois exécuté:
- créerait en récupérant les dimensions écran une fenetre contenant l'image, et serait affichée par dessus l'arriere plan (genre 'toujours visbile')
- irait 'réafficher' les icones bureau par dessus parceque j'en ai quand meme besoin (faudrait le relancer à chaque boot mais c'est pas trop grave)

Bon on peut rêver, après ça doit quand même etre effectif quand j'affiche le bureau, et ne pas m'empecher d'exécuter d'autres programmes qui tourne en premier plan quand j'en ai besoin (genre excel, word, les prog de l'entreprise...)

Re: Changer L'image de fond du bureau !

Publié : ven. 05/oct./2012 10:00
par Ar-S
david a écrit :

Code : Tout sélectionner

CanvasGadget ??
J'utilise PureBasic 4.51 (impossible de mettre une autre version car pas(plus) de droits admin sur le PC pour installer un programme) , ou alors il me manque une librairie ???
Le Canvas est arrivé après la 4.5. Par contre PB est portable, rien ne t'empêche de l'utiliser la 4.61 ou la 5beta2 à partir d'une clé USB.

Re: Changer L'image de fond du bureau !

Publié : ven. 05/oct./2012 11:08
par david
Je n'ai pas CanvasGadget dans la version 4.51 (x86) que j'utilise
J'ai bien téléchargé PureBasic_4_61_x86_(1em4h2).exe.
Il est sur mon PC, mais impossible de l'installer car je n'ai pas d'acces admin pour une installation de programme

Si quelqu'un peut me passer la procedure ou lib que je puisse au moins tester le code

Merci

Re: Changer L'image de fond du bureau !

Publié : ven. 05/oct./2012 11:12
par Ar-S
""double post sorry""

Re: Changer L'image de fond du bureau !

Publié : ven. 05/oct./2012 11:13
par Ar-S
Je répète
Ar-S a écrit : PB est portable (ne nécessite pas d'être installé), rien ne t'empêche d'utiliser la 4.61 ou la 5beta2 à partir d'une clé USB.

Re: Changer L'image de fond du bureau !

Publié : ven. 05/oct./2012 12:03
par Backup
sauf bien sur si ... :roll:

Re: Changer L'image de fond du bureau !

Publié : ven. 05/oct./2012 12:27
par Ar-S
Dobro a écrit :sauf bien sur si ... :roll:
Je ne crois pas (1em4h2).
Ne repartons pas là dessus :lol:
Fred a dit qu'il gérait ce coté de la chose 8)

Re: Changer L'image de fond du bureau !

Publié : ven. 05/oct./2012 12:39
par Backup
Ar-S a écrit :Fred a dit qu'il gérait ce coté de la chose 8)
ouaip , ben heureusement qu'il ne gere pas son compte en banque de la meme façon :lol: :lol: :lol:

Re: Changer L'image de fond du bureau !

Publié : ven. 05/oct./2012 13:12
par Ar-S
Image :mrgreen:

Re: Changer L'image de fond du bureau !

Publié : mer. 10/oct./2012 16:24
par david
Dans la partie du forum 'application' j'ai trouvé un morceau de code qui permet de créer un deuxième bureau avec les icones du bureau par défaut. Ca me semble etre une piste serieuse par rapport au fait que mon Windows XP Pro sans droits ADMIN ne veut jamais modifier l'image en arriere plan (et oui, j'en suis toujours là).
Cependant je n'arrive pas à modifier l'image avec le code ci-dessous qui est quand même très complexe...

Code : Tout sélectionner


Declare .s FormatMessage(erreur.l)
Declare .l OpenDesktop(nom.s, *desktophd.Long)
Declare CreateProcess(application.s, desktop_name.s, *lpProcessInformation.PROCESS_INFORMATION)




nom_du_bureau.s = "bureau_de_test"
res = OpenDesktop(nom_du_bureau, @desktop_hd)

If res = 0 :MessageRequester("INFO","Erreur lors de la création du bureau : " + nom_du_bureau):End:EndIf
 
If res = 1: MessageRequester("INFO","Création du bureau : " + nom_du_bureau)
   
   ; on lance explorer dans le nouveau bureau, mais juste la 1ère fois
   CreateProcess("C:\Windows\explorer.exe", "bureau_de_test", @information_process.PROCESS_INFORMATION)
Else
   ;MessageRequester("INFO","Ouverture du bureau : " + nom_du_bureau)
EndIf

;CreateProcess("C:\Windows\System32\calc.exe", "bureau_de_test", @information_process.PROCESS_INFORMATION)


;--------------------------------------
Procedure.s FormatMessage(erreur.l)
   lpbuffer.s = Space(255)
   
   FormatMessage_(#FORMAT_MESSAGE_FROM_SYSTEM, 0, GetLastError_(), 0, @lpbuffer, 255, 0)
   
   ProcedureReturn lpbuffer
EndProcedure
;--------------------------------------


;--------------------------------------
Procedure.l CreateDesktop(nom.s)
   Define.SECURITY_ATTRIBUTES lpsa
   
   lpsa\nLength = SizeOf(SECURITY_ATTRIBUTES)
   lpsa\lpSecurityDescriptor = 0
   lpsa\bInheritHandle = #True
   
   
   desktop_hd.l = CreateDesktop_(nom, #NULL$, #Null, 0, #GENERIC_ALL, @lpsa)
   
   ProcedureReturn desktop_hd
EndProcedure

Procedure.l OpenDesktop(nom.s, *desktophd.Long) ; ouvre un bureau existant, ou le créer si il n'existait pas
   *desktophd\l = OpenDesktop_(nom, 0, #True, #GENERIC_ALL)
   
   res = 2 ; le bureau spécifié existe déjà
   
   If *desktophd\l = 0
;       Debug "Le bureau : " + nom + " n'existe pas. On va le recréer."
      
      *desktophd\l = CreateDesktop(nom)
      
      If *desktophd\l = 0
         ; Debug "Création du bureau : " + FormatMessage(GetLastError_())
         ProcedureReturn 0 ; on retourne une erreur
      EndIf
      
      res = 1 ; on crée le bureau, car il n'existait pas
   EndIf
   
   ProcedureReturn res
EndProcedure
;--------------------------------------


;--------------------------------------
Procedure CreateProcess(application.s, desktop_name.s, *lpProcessInformation.PROCESS_INFORMATION)
   
   Define.SECURITY_ATTRIBUTES lpProcessAttributes
   
   With lpProcessAttributes
      \nLength = SizeOf(SECURITY_ATTRIBUTES)
      \lpSecurityDescriptor = 0
      \bInheritHandle = #True
   EndWith
   
   
   Define.STARTUPINFO lpStartupInfo
   
   With lpStartupInfo
      \cb = SizeOf(STARTUPINFO)
      \lpDesktop = @desktop_name
   EndWith
   
   res = CreateProcess_(#Null, #DQUOTE$ + application + #DQUOTE$, lpProcessAttributes, #Null, #True, #NORMAL_PRIORITY_CLASS, #Null, GetPathPart(application), lpStartupInfo, *lpProcessInformation)
   
   If res = 0
      Debug "Failed"
      Debug "CreateProcess : " + FormatMessage(GetLastError_())
   Else
     ; Debug "Created"
   EndIf
   
   ProcedureReturn res
EndProcedure
;--------------------------------------


avec comme commande pour aller sur le nouveau bureau:

Code : Tout sélectionner

SwitchDesktop_(desktop_hd)

et ça pour retourner sur le bureau par défaut

Code : Tout sélectionner

desktop_default = OpenDesktop_("Default", 0, #True, #GENERIC_ALL)
; on retourne sur le bureau par défaut
SwitchDesktop_(desktop_default)
par contre pour ce qui est de modifier l'arriere plan....
je me disais qu'on peut peut-etre laisser l'image originale avec le bureau par défaut
mais profiter de la création d'un bureau2 pour lui affecter une autre image (??)