domingo, 7 de diciembre de 2008

Muérete Bug

Siguiendo con el Descubrimiento de mi anterior artículo, AutoHotKey, esta vez toca automatizar una solución para uno de los problemas más odiosos que tiene Windows Vista.



Resulta que las ventanas de exploración de carpetas de Windows Vista olvidan sus preajustes y se muestran como les da la gana, cuando has abierto y cerrado las suficientes.

Esto es debido a algún despiste de Microsoft que no hizo bien los deberes al actualizar el sistema entre XP y Vista.

El caso es que han pasado años con este BUG y aun no se ha resuelto de forma definitiva. Si Windows fuera de código abierto ya habría un parche definitivo.

Por ahora lo que tengo anotado en Regedit son estas direcciones para tocar y sanear de vez en cuando:

HKCU\Software\Microsoft\Windows\Shell
HKCU\Software\Classes\Local Settins\Software\Microsoft\Windows\Shell

Limpiando BagMRU, y no se qué más, por lo general las carpetas recuperan su función normal y vuelven a recordar el estado en que han sido cerradas.

Pero cuando llevas unos cuantos cientos o miles de ventanas cerradas, de nuevo pierden la memoria y aparecen mal.

Así que aquí esta AutoHotKey al rescate.

hotkeys.ahk

#F12::
If WinActive("ahk_class CabinetWClass") {
WinActivate
} else {
MsgBox, Escoja una ventana de exporación de carpetas!
return
}

;Mostrar por Detalles
Send !vs

;Llamar menu de detalles
Send !vg
IfWinExist Elegir detalles
{
WinActivate
}
else
{
WinWait Elegir detalles
WinActivate
}

; Asegurarse de desactivar columnas que se van a activar.
Send {Down}
Send !o
Send {Down}
Send !o
Send {Down}
Send !o
Send !a
Send {Tab}
Send {Enter}

Send !vg
IfWinExist Elegir detalles
{
WinActivate
}
else
{
WinWait Elegir detalles
WinActivate
}
Send !a450
Send {TAB 3}
Send {PgDn 10}
Send {Down 4}

;Mostrar Fecha y ajustar tamo
Send !m
Send !a110

Send {TAB 3}
Send {PgDn 9}
Send {Up}

;Mostrar Tipo y ajustar tamaño
Send !m
Send !a120

Send {TAB 3}
Send {PgUp 2}
Send {Down 8}

;Mostrar Tamaño y ajustar ancho
Send !m
Send !a80

Send {TAB}
Send {Enter}

Send !vg
IfWinExist Elegir detalles
{
WinActivate
}
else
{
WinWait Elegir detalles
WinActivate
}

;Escoger Fecha de modificación y bajar columnas
Send {Down}
Send !b
Send !b
Send !a
Send {TAB}
Send {Enter}
WinMove, A,, 70, 130, 985, 668
return



Tal como lo he programado está preparado para las dimensiones de mi primer monitor (1280x1024) anchando las columnas como a mí me gusta, mostrando la carpetas por detalles, incluyendo las columnas de tamaño, tipo y fecha. Finalmente coloca la ventana en unas coordenadas por defecto y le da un tamaño de 985x668.

Tal como está programado solo funcionará con Windows en castellano. Pero es fácil de internacionalizar.

Tiene en cuenta que al pulsar la tecla #F12 (Win+F12) la ventana activa sea una ventana de exploración de carpetas; En caso contrario un mensaje de aviso nos alertará de que no se puede ejecutar la rutina sin seleccionar una ventana apropiada.

La rutina desactiva hasta tres columnas (sin contar la de Nombre) que puedan estar activas inicialmente para dejarlas como queremos después. Si hay más columnas activas el script no funcionará correctamente.

Todo es mejorable. Por ejemplo AutoHotKey permite hacer llamadas a funciones de librerías DLL, pero como no tengo ni idea de eso lo hago así.

Si se te ocurre un modo mejor comenta, por fa.

No hay comentarios:

Publicar un comentario

Comentarios de humanos, bienvenidos.