Cacher les icônes du bureau

Sujets variés concernant le développement en PureBasic
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Cacher les icônes du bureau

Message par nico »

Suite au Topic de Ar's, j'essaie de trouver une solution plus fiable pour trouver le handle de l'affichage des icônes du bureau sans a se soucier du chemin (arborescence parent\fils etc...) et de la version de window.

Le prog suivant va donc rechercher le bureau et s'il le trouve, le cacher pendant 3 secondes et le ré afficher pour que vous puissiez vérifier que cela fonctionne bien.

Donc fonctionne pour moi, Window 8.1 x64.
J'attends vos retours!

Code : Tout sélectionner

ExamineDesktops()

Procedure.l EnumProc(hWnd.i, *lParam.integer)
  Protected ParentRootClass.s, ClassName.s
  Protected Title.s, Rect.RECT, hancestror.i
  
  ClassName = Space(1024)
  GetClassName_(hWnd, @ClassName, 1024)
  
  If LCase(ClassName) = LCase("SysListView32")
    hancestror.i = GetAncestor_(hWnd, #GA_ROOTOWNER)
    If hancestror <> hwnd 
      ParentRootClass = Space(1024)
      GetClassName_(hancestror, @ParentRootClass, 1024)
      If LCase(ParentRootClass) = LCase("Progman") Or LCase(ParentRootClass) = LCase("WorkerW")
        GetWindowRect_(hancestror, @Rect.RECT)
        If DesktopWidth(0) = Rect\right
          If DesktopHeight(0) = Rect\bottom
            *lParam\i = hwnd
            ProcedureReturn #False
          EndIf 
        EndIf 
      EndIf
    EndIf 
  EndIf
  
  ProcedureReturn #True
EndProcedure 


hWnd = GetDesktopWindow_()

If hWnd <> 0
  EnumChildWindows_(hWnd, @EnumProc(), @HandleShell)
EndIf

If HandleShell <> 0
  ShowWindow_(HandleShell, #SW_HIDE)
  Delay(3000)
  ShowWindow_(HandleShell, #SW_SHOW)
EndIf
Dernière modification par nico le dim. 17/janv./2016 13:56, modifié 2 fois.
Micheao
Messages : 533
Inscription : dim. 07/déc./2014 10:12
Localisation : Sud-Est

Re: Cacher les icônes du bureau

Message par Micheao »

Marche bien sous win10
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Cacher les icônes du bureau

Message par Ar-S »

ça semble fonctionner (testé en PB 5.41 x86 sous W10 x64)
Je testerai aussi la version compilée.
~~~~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
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Cacher les icônes du bureau

Message par nico »

Salut Ar's,

J'ai lu que dans certain cas, voir certain OS (Window 7 par exemple) que la fenêtre Progman pouvait être détachée et donc ne pas être un parent de la fenêtre FolderView.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Cacher les icônes du bureau

Message par nico »

Mise à jour du code (ne traite plus le titre que la classe), affiche dans le debugger, la classe du plus haut parent, soit normalement Progman ou WorkerW.
Avatar de l’utilisateur
cage
Messages : 506
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Cacher les icônes du bureau

Message par cage »

Marche bien sur Win10 64-bit

Code utilisé dans mes applis et testé sous XP, Seven, 8, 8.1 et 10 sans soucis

Code : Tout sélectionner

lHwd = FindWindow_("Progman", #NUL)

ShowWindow_(lHwd, 8) ; Show

ShowWindow_(lHwd, 0) ; Hide
Cela ressemble a ton code
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Cacher les icônes du bureau

Message par Ar-S »

C'est bien comme ça que j'avais commencé Cage (avec SW_SHOW au lieu de SW_SHOWNA) mais parfois ça ne fonctionnais pas. Justement quand la class est rattachée à WorkerW au lieu de progman.
C'est en ce sens que je voulais modifier mon soft. ;)
~~~~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
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Cacher les icônes du bureau

Message par nico »

C'est sympa Case mais comme le dit Ar's, ta solution est celle que l'on connait et on cherche une solution au remplacement de ce code justement qui ne peut pas fonctionner tous le temps.

Par exemple, si tu choisis pour ton fond d'écran, un slide show (des images qui défilent), le Progman n'est plus le Parent (il s'est détaché), c'est un WorkerW qui le devient.

De plus Progman n'est pas la fenêtre qui a les icônes, alors ça marche parce si tu caches la fenêtre parent, ça cache aussi les fenêtre filles.

Je cherche un comportement similaire au menu du clic droit sur le bureau.
Avatar de l’utilisateur
cage
Messages : 506
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Cacher les icônes du bureau

Message par cage »

Désolé, je n'avais pas compris la question. :oops:
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Cacher les icônes du bureau

Message par nico »

C'est pas toujours très simple même pour ce que l'on cherche à faire mais ça aurait pu l'être.

Il reste encore à mettre le registre à jour, comme ça on pourra lancer plusieurs instances.
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Cacher les icônes du bureau

Message par Ar-S »

En tout cas ce dernier code fonctionne nikel sur mon W10 (avec défilement d'images en wallpaper).
~~~~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
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: Cacher les icônes du bureau

Message par Anonyme2 »

Fonctionne à tous les coups sous seven pro x64 en ascii/unicode compilation 32 ou 64.

J'ai une seule image en fond d'écran sélectionnée dans "choisir un arrière-plan pour votre bureau" de windows.

Une fois j'ai Progman et le coup d'après j'ai WorkerW puis le coup d'après j'ai Progman etc.

Cela change à chaque fois.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Cacher les icônes du bureau

Message par nico »

Petite correction, le handle ancestror pouvait être celui de la fenêtre, si la fenêtre n'as pas de parent, ce qui n'est jamais le cas, j'ai rajouté un test supplémentaire.
Répondre