j'ai modifié le programme en rajoutant l'appel a chaque exécution d'un fichier qui est renommé entre AFF.INI et OFF.INI en fonction que l'on soit sur le bureau-de-test ou le bureau 'par defaut'
j'ai fait un raccourci de l'executable dans ma barre des taches à cote de l'icone bureau comme ça il est toujours bien accessible...
A chaque fois que je clic dessus il me permute d'un bureau a l'autre
Chacun a ses icones de programme ouverts dans la barre des taches, chacun a ses icones de raccourcis sur le bureau (en l'occurence les memes pour l'instant mais chaque bureau les conserve à l'emplacement ou ils sont)
Par contre je paierais cher pour pouvoir mettre sur le bureau-de-test une image d'arriere plan de mon choix et de pourvoir revenir sur le bureau 'par defaut' avec ses paramètres inchangés. J'avais suivi un post dans Débutant/changer l'image de fond du bureau.. mais je dois le faire sur le PC Windows XP pro d'une collègue qui est verouillé ((le PC!)) et qui empeche toute modification de l'arriere plan (quelles que soient les méthodes et astuces).
Je me dis que si je crée ce deuxieme bureau copie conforme (ça a l'air de fonctionner) il me suffirait d'en faire le 'bureau principal' si cette satanée image de #@h! de fond pouvait etre modifié
SVP HELP !!!
Code : Tout sélectionner
cheminapp$=GetCurrentDirectory()
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)
;****************************************************************************
;*********************AFF***************************************
;****************************************************************************
mettre_aff:
Resultat = RenameFile(cheminapp$+"off.ini", cheminapp$+"aff.ini") ; dit aff
If resultat = 0
Gosub mettre_off
EndIf
Goto va_copie
End
va_copie:
SwitchDesktop_(desktop_hd)
End
va_original:
desktop_default = OpenDesktop_("Default", 0, #True, #GENERIC_ALL)
; on retourne sur le bureau par défaut
SwitchDesktop_(desktop_default)
End
;;****************************************************************************
;*********************OFF***************************************
;****************************************************************************
mettre_off:
Resultat = RenameFile(cheminapp$+"aff.ini", cheminapp$+"off.ini") ;dit masque/ferme
If resultat = 0
;Gosub mettre_aff
EndIf
Goto va_original
Return
;######################################################################################################
;######################################################################################################
;--------------------------------------
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
;--------------------------------------