[SOURCE-CODE] Easy Link File Viewer

Iniciado por Eleкtro, 28 Mayo 2019, 13:58 PM

0 Miembros y 4 Visitantes están viendo este tema.

Eleкtro

Easy Link File Viewer





Descripción

Easy Link File Viewer es un simple programa para abrir, modificar y escribir archivos de acceso directo (.lnk) con facilidad.

Se trata de una alternativa a la extensión de shell integrada en el sistema operativo Windows que permite visualizar las propiedades de un archivo con extensión lnk.




Caracteristicas

- Aplicación portable. No se necesita instalación, y no se requiere configuración posterior.

- Soporta múltiples instancias del programa. Puede abrir y editar varios archivos a la vez de esta manera.

- Editor de archivos amistoso.

- Arrastrar y soltar archivos.

- Varios estilos visuales.

- Lista con los archivos de acceso directo más usados (MRU).

- Puede leer accesos directos con destinos especiales (virtuales).

- Aplique los cambios directamente al archivo de acceso directo actual, o guarde una copia del mismo en otro destino.




Capturas de pantalla










Archivos de recurso de terceros

Las imágenes PNG incluidas en este repositorio, forman parte de Visual Studio 2017 Image Library.





Donaciones

Todo el código fuente dentro del espacio de nombres 'DevCase' incluido en este repositorio, ha sido extraido y distribuido libremente desde la biblioteca comercial 'DevCase for .NET Framework', un poderoso conjunto de bibliotecas para desarrolladores de .NET.

Para apoyarme, tal vez a usted le gustaría considerar la compra de 'DevCase para .NET Framework'. Aquí hay un enlace a la tienda:

- https://codecanyon.net/item/elektrokit-class-library-for-net/19260282

Gracias por su apoyo.




Descarga










Eleкtro

#1
Para quien pueda estar interesado en este programa:

De aquí a un par de días más o menos, se avecina la primera (y quizás última) actualización de este programa, donde implementaré editores visuales para poder seleccionar archivo/carpeta de una forma alternativa y más amistosa, en lugar de tener que escribir manualmente la ruta. También tengo pensado añadir un nuevo campo en la interfaz de usuario, el cual mostrará el nombre amistoso de un destino especial (CLSID), y así poder reconocer con facilidad el destino del acceso directo, ya que no es lo mismo ver un CLSID, que "Mi PC", por poner un ejemplo.

También trataré de implementar otro editor visual adicional para poder seleccionar de forma alternativa, y previsualizar el índice de icono seleccionado (campo: 'Icon Index'). Algo similar en apariencia al diálogo que muestra Windows para llevar a cabo esta finalidad en las propiedades de un acceso directo. Aunque por el momento no estoy muy decidido a implementar esto, ya que parece muy tedioso de lograr. Veremos.

EDITO: hmmm... estoy pensando que también puedo mejorar la representación del tamaño del archivo (campo: 'Length'), para que en lugar de mostrarse en bytes, se muestre el valor en la unidad más apropiada, y la unidad a la que haga referencia.

Cuando todo esto esté implementado, creo que el programa se podrá considerar definitivamente completo. De todas formas acepto otras sugerencias que no se hayan mencionado en este comentario.

Un saludo.








Machacador

Me parece mejor un nombre mas corto... no se... o sea...

Aunque yo no se mucho de esto y ni siquiera entendí para que sirve el programa... grrrrr...

:rolleyes: :o :rolleyes:

Saludos.
"Solo tu perro puede admirarte mas de lo que tu te admiras a ti mismo"

Eleкtro

#3
Cita de: Machacador en 28 Mayo 2019, 18:07 PM
Me parece mejor un nombre mas corto... no se... o sea...

No te culpo por pensar así. Pero para que se entienda el propósito de un programa, a veces hace falta ponerle nombres muy genéricos que sean autoexplicativos (que más que un nombre, sea una descripción xD).

Además que no voy a comercializar la app, así que no veo necesidad de ponerle un nombre con más visión de marketing por así decirlo...

EasyLinkFileViewer

¿Así mejor?. xD




Cita de: Machacador en 28 Mayo 2019, 18:07 PMni siquiera entendí para que sirve el programa... grrrrr...

El programa que he publicado, sirve para llevar a cabo de una forma alternativa lo mismo que puedes hacer al pulsar "Propiedades" sobre un archivo de acceso directo como el siguiente que pongo de ejemplo:



Es decir, sirve para editar las propiedades de un acceso directo.

PD: y si te estás preguntando cual es la diferencia, entonces lee el apartado de CARACTERÍSTICAS de mi programa. xD

Saludos, gringo-lover ! :rolleyes:








Machacador

E.L.F.V. se ve bien porque es casi como mis iniciales J.M.F.V.

:rolleyes: :o :rolleyes:

Saludos. Sin epítetos porque luego te molestas... grrrrrrrrr...
"Solo tu perro puede admirarte mas de lo que tu te admiras a ti mismo"

Eleкtro

Nueva versión 1.1

Los cambios visuales en la interfaz de usuario pueden verlo en las imágenes del post principal.

Lista de cambios:

- Added a UI editor for 'Icon' property to select a icon file through a dialog window.

- Added a UI editor for 'Icon Index' property to preview the current icon.

- Added a UI editor for 'Target' property to select a file or folder through a dialog window.

- Added a UI editor for 'Working Directory' property to select a folder through a dialog window.

- Added icon preview for the current shortcut file on the status bar.

- Added a property 'Target Display Name' which will display a friendly name for special targets.
  (eg. '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}' CLSID is translated as 'My PC').

- Added a context menu accessible through a right mouse click on the property grid, with the next commands:

   Open Shortcut
   Open Target
   Open Target with Arguments
   View Shortcut in Explorer
   View Target in Explorer
   View Working Directory in Explorer
   View Icon in Explorer

- Added 'New' option in 'File' menu to create a new, empty shortcut.

- Added 'Font Size' option in 'Settings' menu to change the UI font size.

- Increased default UI font size to 10pt.

- Improved the representation of 'Length' property value.
  Now it displays a proper file size string instead of a raw bytes-length value.

- Improved the resizing of the property grid.
  Now it keeps the default column size while the user is resizing the window.

- Other minor UI corrections.

- Some property descriptions were abbreviated.








@XSStringManolo

Qué hace exactamente esta caracteristica - Lista con los archivos de acceso directo más usados (MRU).
Hace track a los links creados por el programa? Hace track a todos los links? Hace track a partir de que se ha ejecutado el programa? Hace track con el programa sin procesos en ejecucion?
Como hace track? Con una variable static asociada a cada link creado? O es una propiedad de los .lnk?
Se me ocurre alguna actividad maliciosa que hacer con algo así. Tiene algún buscador para por ejemplo buscar los lnk del escritorio o ka barra de tareas? Y para modificar los lnk ya existentes antes de que se ejecute el programa?

Eleкtro

#7
Cita de: string Manolo en 30 Mayo 2019, 17:18 PM
Qué hace exactamente esta caracteristica - Lista con los archivos de acceso directo más usados (MRU).

Hace track a los links creados por el programa?
Hace track a todos los links?
Hace track a partir de que se ha ejecutado el programa?
Hace track con el programa sin procesos en ejecucion?

Quizás no describí bien dicha característica. Lo que hace es mantener una lista de los 10 links más recientes que hayan sido abiertos/cargados en el programa.

Por decisión de diseño, dicha lista solamente tiene efecto durante el tiempo de vida del proceso. O dicho de otra forma, no es una lista MRU persistente; la información de los archivos recientes no se llega a serializar de forma física en el disco.

Cita de: string Manolo en 30 Mayo 2019, 17:18 PM
Como hace track? Con una variable static asociada a cada link creado? O es una propiedad de los .lnk?

Simplemente desarrollé un pequeño algoritmo para que al abrir/cargar un archivo .lnk en el programa, se obtenga cierta información básica del archivo (nombre de archivo, ruta absoluta e icono) y con ello se crea de forma dinámica una nueva entrada en el menú de archivos recientes ("File" -> "Recent...").

Si deseas conocer más detalles al respecto, puedes analizar el método 'UpdateMruItems' en el código fuente...

Cita de: string Manolo en 30 Mayo 2019, 17:18 PM
Se me ocurre alguna actividad maliciosa que hacer con algo así.

No hay nada de malicioso en una lista de archivos recientes usados o MRU. Cualquier aplicación medianamente completa que permita al usuario final seleccionar/cargar un archivo específico, provee esta característica. Sin ir más lejos, puedes encontrar una lista MRU en el MS Paint, Photoshop, cualquier editor de texto profesional, reproductores de audio y video, e incluso en el menú "Inicio" de Windows.

Doy por hecho que todo esto ya lo sabías, pero igualmente lo quería explicar, por que si empezamos a buscarle finalidades malicioosas a las cosas... mal vamos XD, "cualquier" algoritmo en malas manos se podría convertir en un arma maliciosa...

Cita de: string Manolo en 30 Mayo 2019, 17:18 PM
Tiene algún buscador para por ejemplo buscar los lnk del escritorio o ka barra de tareas? Y para modificar los lnk ya existentes antes de que se ejecute el programa?

Creo que no entendí esas dos última preguntas. El programa Easy Link File Viewer no sirve para buscar archivos links, por lo que no implementa ningún algoritmo de búsqueda automatizada, más allá de una ventana de diálogo estándar de Windows con la finalidad de epxlorar los directorios del sistema para seleccionar el archivo a abrir/cargar, crear y guardar. Los links solamente se modifican al pulsar el botón "Save" o "Save As..." del menú "File".

¡Un saludo!








@XSStringManolo

Ohh, buena explicacion, ya entiendo el funcionamiento! Estaba pensando en usarlo para modificar los .lnk de brownsers que mucha gente se pone en el escritorio (por ejemplo facebook.com) añadiendo urls de paginas fake a la ruta o cargar malware. Lo tipico que hacen los addware.

Eleкtro

#9
Cita de: string Manolo en 31 Mayo 2019, 12:00 PMEstaba pensando en usarlo para modificar los .lnk de brownsers que mucha gente se pone en el escritorio (por ejemplo facebook.com) añadiendo urls de paginas fake a la ruta o cargar malware. Lo tipico que hacen los addware.

Pero eso no son archivos con extensión .lnk, amigo, son .url.

Por cierto, el formato de un archivo .url es lo mismo que el formato de archivo .ini:
[section]
key=value

...por lo que la manipulación de ese tipo de archivo de forma programática (y para los fines que quieras) sería super sencillo.

Saludos!