Página 1 de 1

Refrescar escritorio (Ayuda)

Publicado: 22 Abr 2012, 10:20
por melvinhn
La idea es sencilla esta haciendo un programa el cual activo o desactivo los iconos (Accesos director originales) del escritorio atraves de las cadenas del regedit
El problema es como hago que el escritorio se refresque no mas le doy clic en el boton para que se muestre o se oculte dicho acceso creado

según busque en google EnvUpdate() refresca el escritorio, pero no me ha servido en nada

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$Ventana = GUICreate("Mi equipo", 348, 192, -1, -1)
$Mostrar = GUICtrlCreateButton("Mostrar", 72, 128, 89, 33)
$Ocultar = GUICtrlCreateButton("Ocultar", 184, 128, 105, 33)
$Icono = GUICtrlCreateIcon("shell32.dll", 16, 150, 50, 48, 48)
$Label = GUICtrlCreateLabel("Mostrar en escritorio", 120, 16, 99, 17)
GUISetState(@SW_SHOW)


While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Mostrar
			_Mostrar()
		Case $Ocultar
			_Ocultar()
	EndSwitch
WEnd

Func _Mostrar()
RegWrite("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel", "{20D04FE0-3AEA-1069-A2D8-08002B30309D}", "REG_DWORD", "0")
EnvUpdate()
MsgBox(0, "", "Icono debe estar mostrado en escritorio")
EndFunc

Func _Ocultar()
RegWrite("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel", "{20D04FE0-3AEA-1069-A2D8-08002B30309D}", "REG_DWORD", "1")
EnvUpdate()
MsgBox(0, "", "Icono debe estar oculto en escritorio")
EndFunc
también he probado ejecutando este comando pero no me ha funcionado después de escribir en el registro

Run("RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters")

Re: Refrescar escritorio (Ayuda)

Publicado: 22 Abr 2012, 11:55
por arkcrew
Buenas,

He rebuscado un pelin por el foro de autoit, y he encontrado estas dos opciones, que al menos en mi ordenador con windows 7 han funcionado.

ControlSend('Program Manager', '', '', '{F5}')

Esta primera al parecer manda un F5, la tecla mágina para recargar y/o actualizar cosas, incluidas el escritorio de windows, a mi me funciona, pero por si a ti no, te dejo esta segunda:

Const $WM_SETTINGCHANGE = 0x001A
Const $HWNDBROADCAST = 0xFFFF
Const $szParam = "Environment"

DllCall("user32.dll", "int", "SendMessage", _
"hwnd", $HWNDBROADCAST, _
"int", $WM_SETTINGCHANGE, _
"int", 0, _
"int", $szParam)

Run("rundll32 user32.dll,UpdatePerUserSystemParameters")

Esta la verdad no tengo ni puñetera idea de como funciona porque las dlls y yo no nos entendemos bien, pero creo que hace más o menos lo mismo que la otra ..

Espero que alguna te funcione.

Saludos!

Re: Refrescar escritorio (Ayuda)

Publicado: 23 Abr 2012, 00:25
por melvinhn
gracias me quede con la primera opcion porque me funciono

gracias sigo terminando lo que estoy haciendo