Page 1 sur 1

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

Posté : lun. 23 mai 2016 19:58
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

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

Posté : lun. 23 mai 2016 20:28
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.

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

Posté : lun. 23 mai 2016 21:06
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

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

Posté : lun. 23 mai 2016 21:39
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...

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

Posté : mar. 24 mai 2016 11:31
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.

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

Posté : mar. 24 mai 2016 12:00
par orax

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

Posté : mar. 24 mai 2016 12:20
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

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

Posté : mar. 24 mai 2016 12:40
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

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

Posté : ven. 27 mai 2016 10:29
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 :)


++

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

Posté : ven. 27 mai 2016 11:51
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

++