Refrescar escritorio (Ayuda)

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Avatar de Usuario
melvinhn
Hacker del Foro
Mensajes: 75
Registrado: 16 Jul 2011, 22:14
Ubicación: Honduras, Cortes, Puerto Cortes, Col Miraflores
Contactar:

Refrescar escritorio (Ayuda)

Mensaje 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")
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: Refrescar escritorio (Ayuda)

Mensaje 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!
Avatar de Usuario
melvinhn
Hacker del Foro
Mensajes: 75
Registrado: 16 Jul 2011, 22:14
Ubicación: Honduras, Cortes, Puerto Cortes, Col Miraflores
Contactar:

Re: Refrescar escritorio (Ayuda)

Mensaje por melvinhn »

gracias me quede con la primera opcion porque me funciono

gracias sigo terminando lo que estoy haciendo
Responder