[R] Masquer/afficher les icônes du bureau W7

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
AzinWxon
Niveau 1
Niveau 1
Messages : 5
Enregistré le : lun. 23 mai 2016 16:20
Status : Hors ligne

[R] Masquer/afficher les icônes du bureau W7

#1

Message par AzinWxon »

Bonjour,

Je désire écrire un script qui masque/affiche les icônes du bureau W7 (lancement par raccourci clavier). Je suis un débutant AutoIt et sur les conseils d'un membre émérite du forum j'ai testé les scripts proposés par Yashied et Wakillon dans le post https://www.autoitscript.com/forum/topi ... ent-828094.
Aucun ne donne de bons résultats sur ma machine (W7 x64) : les scripts s'exécutent sans erreur mais les icônes du bureau demeurent toujours visibles.
Pour information le retour de _IsDesktopIconShow (script Yashied) est FALSE.

Quelqu'un aurait-il la solution ?

Merci par avance.

Bien cordialement.

Azin Wzon
Modifié en dernier par AzinWxon le mar. 24 mai 2016 13:03, modifié 2 fois.
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: Masquer/afficher les icônes du bureau W7

#2

Message par blacksoul305 »

Re-bonsoir,

il semblerait que je vous ai envoyé le lien du mauvais message, néanmoins d'autres solutions sont proposées sur le même sujet. Avez vous essayé ce code proposé par Yashied ?

Code : Tout sélectionner

DllCall('user32.dll', 'lresult', 'SendMessage', 'hwnd', ControlGetHandle('[CLASS:Progman]', '', '[CLASS:SHELLDLL_DefView]'), 'uint', 0x0111, 'wparam', 29698, 'lparam', 0)
EDIT : Ooops, il semblerait que oui. Peut-être ce post là alors ?

EDIT2 : Ah, peut-être qu'il s'agit de droits d'administrateur. Placez #RequireAdmin en tête de votre script et ré-essayez le code de Yashied ou ceux cités dans le post de mon premier EDIT.
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: Masquer/afficher les icônes du bureau W7

#3

Message par orax »

Sur W8, ça marche correctement. Je n'ai d'ailleurs pas eu besoin d'ajouter #RequireAdmin.

Le code ci-dessous affiche quoi ? S'il n'y a pas d'erreur, il devrait afficher deux fois 1 0 0.
#include <WinAPI.au3>

$r = _ShowDesktopIcons(0) ; Hide
ConsoleWrite($r & " " & @error & " " & @extended & @CRLF)
Sleep(3000)
_ShowDesktopIcons(1) ; Show
ConsoleWrite($r & " " & @error & " " & @extended & @CRLF)

Func _ShowDesktopIcons($_Show)
   $hProgram = WinGetHandle('[CLASS:Progman]')
   If @error Then Return SetError(1, @error, False)
   $hControl = ControlGetHandle($hProgram, '', '[CLASSNN:SHELLDLL_DefView1]')
   If @error Then Return SetError(2, @error, False)
   Return _WinAPI_PostMessage($hControl, 0x00111, 0x7402, $_Show)
EndFunc   ;==>_ShowDesktopIcons
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: Masquer/afficher les icônes du bureau W7

#4

Message par blacksoul305 »

Je suis sous Windows 10 et personnellement je n'ai pas besoin de #RequireAdmin, cela dit je me souviens que Vista et Windows 7 notamment, demandaient souvent cette directive là à partir du moment où je voulais faire autre chose qu'un Hello World...
Étudiant en 2ème année de Licence Informatique.
AzinWxon
Niveau 1
Niveau 1
Messages : 5
Enregistré le : lun. 23 mai 2016 16:20
Status : Hors ligne

Re: Masquer/afficher les icônes du bureau W7

#5

Message par AzinWxon »

Bonjour,

Merci d'avoir répondu à ma demande.
Orax, le code affiche sur ma machine (W7 x64) :
False 2 1
False 2 1
Blacksoul305, #RequireAdmin ne change rien.

Bien cordialement.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: Masquer/afficher les icônes du bureau W7

#6

Message par orax »

De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: Masquer/afficher les icônes du bureau W7

#7

Message par jguinch »

_WinAPI_PostMessage renvoi une erreur. Utilise _WinAPI_GetLastError () pour récupérer le code de l'erreur.

Le code marche pour moi sur Windows 7x64 et Windows 10x64
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
AzinWxon
Niveau 1
Niveau 1
Messages : 5
Enregistré le : lun. 23 mai 2016 16:20
Status : Hors ligne

Re: Masquer/afficher les icônes du bureau W7

#8

Message par AzinWxon »

A Orax : idem avec les 2 exemples (IanN1990 - AnswerA et AnswerB). C'est pas grave, j'abandonne ! Et merci encore.
Bien cordialement.
Azin Wxon
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 342
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

Re: [R] Masquer/afficher les icônes du bureau W7

#9

Message par franco »

Salut.

Dommage que tu abandonnes aussi vite et facilement...

J'avais pondu un script qui me permettant à la fois :
  • De cacher / d'afficher les icônes du bureau
  • De cacher / d'afficher la barre des tâches.
Bref, sous windows 10.

Je peux tester sous windows 7 si tu veux.
Mais si tu veux vraiment abandonner... Tant pis :)


++
L'entraide, c'est mon dada ;)
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 342
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

Re: [R] Masquer/afficher les icônes du bureau W7

#10

Message par franco »

Salut.

Bon, j'ai testé sous windows 7 X64 (en VM) : et ça fonctionne.
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>


Global $Form1 = GUICreate("Hide Desktop&Bar", 280, 30, 192, 124)
GUISetFont(9,400,0,"comic sans ms")

$DesktopState = GUICtrlCreateRadio("Les icônes du bureau",05,05,140,20)
$BarState = GUICtrlCreateRadio("La barre des tâches",145,05,130,20)


GUISetState(@SW_SHOW)


While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
         Exit

      case $DesktopState
         _ShowHide_DesktopIcons()
         GUICtrlSetState($DesktopState,$GUI_UNCHECKED)


      Case $BarState
         _ShowHide_Bar()
         GUICtrlSetState($BarState,$GUI_UNCHECKED)

   EndSwitch
WEnd

Func _ShowHide_Bar()
   $iState = WinGetState(WinWait("[CLASS:Shell_TrayWnd]", ""))
   If BitAND($iState, 2) Then WinSetState("[CLASS:Shell_TrayWnd]", "", @SW_HIDE)
   If Not BitAND($iState, 2) Then WinSetState("[CLASS:Shell_TrayWnd]", "", @SW_SHOW)
EndFunc   ;==>_ShowHide_Bar

Func _ShowHide_DesktopIcons()
   $iState = WinGetState("[CLASS:Progman]")
   If BitAND($iState, 2) Then $show = 0
   If Not BitAND($iState, 2) Then $show = 1
   Local $aResult = DllCall("user32.dll", "bool", "PostMessage", "hwnd", ControlGetHandle(WinGetHandle("[CLASS:Progman]"), "", "[CLASSNN:SHELLDLL_DefView1]"), "uint", _
         0x00111, "wparam", 0x7402, "lparam", $show)
   If @error Then Return SetError(@error, @extended, False)
   Return $aResult[0]
EndFunc   ;==>_ShowHide_DesktopIcons
Pour résumer :
Le script détecte si les icônes du bureau sont visibles ou non.
De là :
  • Si les icônes sont visibles : le script les cache.
  • Si les icônes sont cachées : le script les ré-affiche.
C'est la fonction : _ShowHide_DesktopIcons()


Donc, vu que tu veux en faire un raccourci clavier, tu devras utiliser un hotkeyset : http://www.autoitscript.fr/autoit3/docs ... KeySet.htm

En espérant que ton pc veut bien de ce script xD

++
L'entraide, c'est mon dada ;)
Répondre