Restaurar Icono de Carpeta Predeterminado

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Restaurar Icono de Carpeta Predeterminado

Re: Restaurar Icono de Carpeta Predeterminado

Post by sofista » 14 Jan 2024, 16:35

Hola: Gracias por confirmarlo. Edito los scripts publicados para evitar posibles malentendidos a otros usuarios del foro. Saludos

Re: Restaurar Icono de Carpeta Predeterminado

Post by cilniani » 14 Jan 2024, 12:32

¡Era eso! Ahora funciona perfectamente, muchísimas gracias. Saludos.

Re: Restaurar Icono de Carpeta Predeterminado

Post by sofista » 12 Jan 2024, 18:40

Hola: Gracias por la paciencia y las pruebas. Mientras tanto, probé el script en otro equipo y también se detuvo en la primera ventana de propiedades. Buscando diferencias, encontré que en este otro equipo, aunque tiene instalado el mismo SO y compilación, el nombre de la ventana de propiedades es Propiedades: , cuando en mi equipo es Propiedades de . Una vez que cambié este comando

Code: Select all

WinWait, Propiedades de 
por este otro

Code: Select all

WinWait, Propiedades
es decir, dejando sólo Propiedades, el script funcionó sin problemas.

Suerte!

Re: Restaurar Icono de Carpeta Predeterminado

Post by cilniani » 12 Jan 2024, 17:47

Hola de nuevo. He estado probando lo de alargar y/o intercalar Sleeps en la función restaurarIcono(), pero el resultado es el mismo: Se abre la ventana de propiedades de la primera subcarpeta, y ahí se queda (cuando cierro esa ventana y vuelvo a ejecutar el código, ya no hace nada). Por otra parte he probado seleccionando un archivo que no era una carpeta y me ha salido una ventana indicando "Por favor, selecciona una carpeta".

Saludos.

Re: Restaurar Icono de Carpeta Predeterminado

Post by cilniani » 12 Jan 2024, 16:04

Gracias. Éste último funciona bien, y el código para verificar que se leen todas las carpetas también funcionaba correctamente. Tengo que ir probando lo de alargar y/o intercalar Sleeps en la función restaurarIcono().

Saludos.

Re: Restaurar Icono de Carpeta Predeterminado

Post by sofista » 12 Jan 2024, 15:17

Hola: Bueno, una pena que no te funcionara, no le encuentro explicación al fallo, aparte de lo comentado antes. Por ahora no se me ocurre nada más, ya que no obtuve respuestas de los últimos tests que te sugerí. Quizás a alguien más se le ocurra alguna otra idea.

Por si decidís volver a usar el código que publicaste en Feb/22, una manera de simplificarlo es la siguiente:

Code: Select all

^i::
	Send, !{enter}
	Sleep, 1000
	Send, ^{Tab 4}
	Send, {Tab}
	Loop, 2 {
		Send, {Tab}
		Send, {Tab} {enter}
	}
Return
Suerte!

Re: Restaurar Icono de Carpeta Predeterminado

Post by cilniani » 12 Jan 2024, 11:08

Hola. Lo he intentado con otro ordenador, pero sigue sin funcionarme. Gracias en cualquier caso.

Saludos.

Re: Restaurar Icono de Carpeta Predeterminado

Post by sofista » 09 Jan 2024, 15:29

Hola: Qué raro, lo probé con tres carpetas y me funcionó sin problemas. Supongo, entonces, que ha de ser o bien un problema de interferencia o bien de timing, quizás el disco está lento.

Un reinicio del equipo no vendría mal. Luego, asegurarse de que no haya ningún otro script en ejecución. Si haciendo así, sigue sin funcionar, habría que alargar y/o intercalar Sleeps en la función restaurarIcono(), fundamentalmente justo antes de Send, {Enter}. Es cuestión de experimentar un poco hasta encontrar la solución. Cada equipo es un mundo aparte.

Por otra parte, podrías verificar que se lean correctamente todas las carpetas contenidas en la carpeta seleccionada, con el siguiente código:

Code: Select all

^m::
	myFolder := Explorer_GetSelection() "\"
	if !InStr(FileExist(myFolder),"D") {                           ; ¿Es una carpeta?
		MsgBox, % "Por favor, selecciona una carpeta."             ; Si no lo es,
		return                                                     ; termina el script.
	}
	Output := ""
	Loop, Files, %myFolder%*.*, DR
	{
		Output .= A_LoopFileFullPath "`n"
	}

MsgBox, % Output    ; muestra la ruta de todas las carpetas contenidas en la carpeta seleccionada.
return

Explorer_GetSelection() {    ; teadrinker https://www.autohotkey.com/boards/viewtopic.php?t=60403
	WinGetClass, winClass, % "ahk_id" . hWnd := WinExist("A")
	if !(winClass ~="Progman|WorkerW|(Cabinet|Explore)WClass")
		Return
	
	shellWindows := ComObjCreate("Shell.Application").Windows
	if (winClass ~= "Progman|WorkerW")
		shellFolderView := shellWindows.FindWindowSW(0, 0, SWC_DESKTOP := 8, 0, SWFO_NEEDDISPATCH := 1).Document
	else {
		for window in shellWindows
			if (hWnd = window.HWND) && (shellFolderView := window.Document)
				break
	}
	for item in shellFolderView.SelectedItems
		result .= (result = "" ? "" : "`n") . item.Path
	if !result
		result := shellFolderView.Folder.Self.Path
	Return result
}

Re: Restaurar Icono de Carpeta Predeterminado

Post by cilniani » 09 Jan 2024, 12:50

Hola. Sigue sin funcionarme. Al ejecutarlo se abre la ventana propiedades de la primera subcarpeta, pero ahí se queda. Saludos.

Re: Restaurar Icono de Carpeta Predeterminado

Post by sofista » 07 Jan 2024, 15:40

Hola: Detecté un par de problemas, creo que los arreglé. También incorporé el código para procesar la carpeta seleccionada en el Desktop. Y, por las dudas, también verifica que el objeto seleccionado sea una carpeta.

Esperemos que funcione bien :)

Code: Select all

^m::
	myFolder := Explorer_GetSelection() "\"
	if !InStr(FileExist(myFolder),"D") {                           ; ¿Es una carpeta?
		MsgBox, % "Por favor, selecciona una carpeta."             ; Si no lo es,
		return                                                     ; termina el script.
	}
	Loop, Files, %myFolder%*.*, DR
	{
		restaurarIcono(A_LoopFileFullPath)
	}
return

restaurarIcono(folderPath) {
	Sleep, 1000
	Run, Properties %folderPath%                                   ; Abre Propiedades
	WinWait, Propiedades                                           ; parámetro corregido
	WinGet, hWnd, ID, A
	SendMessage, 0x1330, 4,, SysTabControl321, % "ahk_id " hWnd    ; Abre Personalizar
	ControlClick, Button5, % "ahk_id " hWnd                        ; Restaurar predeterminado
	Sleep, 1000
	ControlClick, Button8, % "ahk_id " hWnd                        ; Aceptar
	Send, {Enter}                                                  ; Se fuerza el cierre de la ventana
}

Explorer_GetSelection() {    ; teadrinker https://www.autohotkey.com/boards/viewtopic.php?t=60403
	WinGetClass, winClass, % "ahk_id" . hWnd := WinExist("A")
	if !(winClass ~="Progman|WorkerW|(Cabinet|Explore)WClass")
		Return
	
	shellWindows := ComObjCreate("Shell.Application").Windows
	if (winClass ~= "Progman|WorkerW")
		shellFolderView := shellWindows.FindWindowSW(0, 0, SWC_DESKTOP := 8, 0, SWFO_NEEDDISPATCH := 1).Document
	else {
		for window in shellWindows
			if (hWnd = window.HWND) && (shellFolderView := window.Document)
				break
	}
	for item in shellFolderView.SelectedItems
		result .= (result = "" ? "" : "`n") . item.Path
	if !result
		result := shellFolderView.Folder.Self.Path
	Return result
}

Re: Restaurar Icono de Carpeta Predeterminado

Post by cilniani » 07 Jan 2024, 15:04

Parece que el error me da en la primera parte del código, la del loop, porque he probado la segunda parte, la de "restaurarIcono(folderPath)", y esa va bien, pero solo sobre la carpeta señalada.

Saludos y gracias.

Re: Restaurar Icono de Carpeta Predeterminado

Post by sofista » 07 Jan 2024, 14:45

Sí, lo recomendable es usar siempre la última versión disponible.

Re: Restaurar Icono de Carpeta Predeterminado

Post by cilniani » 07 Jan 2024, 14:44

He instalado la última versión. Pero sigue haciendo lo mismo: se abre una nueva ventana del explorador y a la vez la ventana de propiedades de la primera subcarpeta de la carpeta "Pruebas", y ahí se queda.

Re: Restaurar Icono de Carpeta Predeterminado

Post by cilniani » 07 Jan 2024, 14:41

Gracias. Al poner la barra invertida lo que ocurre es que se abre una nueva ventana del explorador y a la vez la ventana de propiedades del primera subcarpeta de la carpeta "Pruebas", y ahí se queda. La versión de autohotkey que tengo es 1.1.33.02. Instalaré la última versión a ver que tal.

Saludos

Re: Restaurar Icono de Carpeta Predeterminado

Post by sofista » 07 Jan 2024, 14:09

Hola: Bien, una de las cosas que quería verificar es la ruta de la carpeta. Como es una carpeta y no un archivo, a la ruta le falta la barra invertida final: "N:\Pruebas\". Probemos ahora si el código funciona de manera correcta y consistente.

Una vez solucionado esto, vemos el tema de la selección de la carpeta.

Hay implementada una constante para averiguar la versión de AutoHotkey:

Code: Select all

MsgBox, % A_AhkVersion

Re: Restaurar Icono de Carpeta Predeterminado

Post by cilniani » 07 Jan 2024, 11:44

Gracias. Éste es el código que usé:

Code: Select all

^m::

SetTitleMatchMode, 2

myFolder := "N:\Pruebas"                                          ; path/ruta de la carpeta activa
Loop, Files, %myFolder%*.*, DR
{
	Run, % "explorer /select," A_LoopFileFullPath                  ; Selecciona la carpeta en Explorer
	restaurarIcono(A_LoopFileFullPath)
}

restaurarIcono(folderPath) 
{
	Sleep, 1000
	Run, Properties %folderPath%                                   ; Abre Propiedades
	WinWait, Propiedades de 
	WinGet, hWnd, ID, A
	SendMessage, 0x1330, 4,, SysTabControl321, % "ahk_id " hWnd    ; Abre Personalizar
	ControlClick, Button5, % "ahk_id " hWnd                        ; Restaurar predeterminado
	Sleep, 1000
	ControlClick, Button8, % "ahk_id " hWnd                        ; Aceptar
}
Cambié la ruta de la carpeta (aunque la idea es que funcione con la carpeta, y sus subcarpetas, que tenga señalada, y no indicar expresamente la carpeta en el código). Cuando ejecuto a veces abre una nueva ventana del explorador, a veces abre la ventana propiedades y a veces no hace nada (al menos nada que yo vea). Tengo Windows 10, pero no sé que versión de AutoHotkey ¿cómo puedo saber que versión es?

Saludos, y de nuevo gracias.

Re: Restaurar Icono de Carpeta Predeterminado

Post by sofista » 07 Jan 2024, 11:14

Hola: Para más ayuda, necesitaría que subas el código tal cual lo usaste —encerralo entre las etiquetas "code" para que se visualice correctamente— y que indiques qué funcionó —por ejemplo, si abrió la ventana de propiedades, etc.— y qué no. ¿Cambiaste la ruta a la carpeta activa? ¿Qué funcionaba y qué no del script anterior?

El script lo desarrollé en Windows 10, interfaz en español, AutoHotkey v1.1.37.01, cualquier otra versión puede generar un error.

Re: Restaurar Icono de Carpeta Predeterminado

Post by Guest » 07 Jan 2024, 10:30

Gracias. Pero no consigo que funcione. Saludos.

Re: Restaurar Icono de Carpeta Predeterminado

Post by sofista » 05 Jan 2024, 18:46

Hola: Quizás este script te funcione, al menos lo probé y anduvo bien en mi equipo. Y ya que estaba, reescribí el script de @cilniani en una función:

Code: Select all

SetTitleMatchMode, 2

myFolder := "D:\Pruebas\"                                          ; path/ruta de la carpeta activa
Loop, Files, %myFolder%*.*, DR
{
	Run, % "explorer /select," A_LoopFileFullPath                  ; Selecciona la carpeta en Explorer
	restaurarIcono(A_LoopFileFullPath)
}

restaurarIcono(folderPath) {
	Sleep, 1000
	Run, Properties %folderPath%                                   ; Abre Propiedades
	WinWait, Propiedades                                           ; parámetro corregido
	WinGet, hWnd, ID, A
	SendMessage, 0x1330, 4,, SysTabControl321, % "ahk_id " hWnd    ; Abre Personalizar
	ControlClick, Button5, % "ahk_id " hWnd                        ; Restaurar predeterminado
	Sleep, 1000
	ControlClick, Button8, % "ahk_id " hWnd                        ; Aceptar
}
Buen año.

Re: Restaurar Icono de Carpeta Predeterminado

Post by Guest » 05 Jan 2024, 13:03

Hola a todos. Revivo éste post por si a alguien se le ocurre como puedo hacer para que el script se ejecute en todas las subcarpetas de la carpeta activa. Saludos y gracias.

Top