elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Obtener la ruta real de un acceso directo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Obtener la ruta real de un acceso directo  (Leído 13,451 veces)
Spider-Net


Desconectado Desconectado

Mensajes: 1.165


Un gran poder conlleva una gran responsabilidad


Ver Perfil WWW
Obtener la ruta real de un acceso directo
« en: 19 Mayo 2009, 23:16 pm »

Hola a tod@s. Estoy programando un panel completo para mi NetBook. Ya sabemos que estos cacharritos son muy útiles (al menos para mí). Pero la resolución de 1024x600 deja poquito espacio en el escritorio para colocar iconos y demás así que estoy programando un panel ocultable y personalizable donde poder poner tus propios iconos y demás. Cuando lo termine lo postearé por aquí.

El caso es que he programado un drag&drop sencillo para que cuando arrastres un fichero o directorio desde el explorador de windows al panel automáticamente crea un icono que posee el icono de ese programa y el enlace al mismo (digamos que es un acceso directo desde el programa ejecutado con ShellExecute).

Hasta ahí todo bien, pero me gustaría que si arrastro al panel un acceso directo de Windows en lugar de tomar la ruta de ese acceso directo y su icono, me gustaría tomar el archivo original de modo que si yo tengo en mi escritorio un acceso directo a Dreamweaver en lugar de tomar el icono y enlace de:
C:\Documents And Settings\Usuario\Escritorio\Dreamweaver.Ink
Que obtenga al ruta real de ese acceso y tome el icono y enlace a:
C:\Archivos de Programa\Adobe\DreamWeaver CS3\Dreamweaver.exe

Simplemente quiero saber como obtener la ruta real de un acceso directo, no sé si habrá algún módulo o alguna API que lo haga. He buscado en el foro y en google y la verdad es que no he encontrado nada, sé que el propio CommonDialog si abres un acceso directo con él, automáticamente haya la ruta real del fichero, así que me gustaría poder hacer algo así.

Perdón por enrollarme tanto pero me gusta explicar bien las cosas xDD
Gracias por leer y gracias por ayudarme de antemano.

Un saludo


« Última modificación: 19 Mayo 2009, 23:19 pm por Spider-Net » En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Obtener la ruta real de un acceso directo
« Respuesta #1 en: 20 Mayo 2009, 00:15 am »

Esta es una función de este proyecto que codeé para el Abril Negro ;):
Citar

Código
  1. '---------------------------------------------------------------------------------------
  2. ' Procedimiento : GetLnkTarget
  3. ' Autor         : Karcrack
  4. ' Fecha         : 28/04/2009
  5. ' Parametro(s)  : sPath -> Ruta del fichero *.lnk
  6. ' Return        : La ruta a la que apunta el fichero *.lnk
  7. '---------------------------------------------------------------------------------------
  8.  
  9. Private Function GetLnkTarget(ByVal sPath As String) As String
  10.    Dim WSH         As Object
  11.    Dim oShellLnk   As Object
  12.  
  13.    Set WSH = CreateObject("WScript.Shell")
  14.    Set oShellLnk = WSH.CreateShortcut(sPath)
  15.  
  16.    GetLnkTarget = oShellLnk.TargetPath
  17.  
  18.    Set WSH = Nothing
  19.    Set oShellLnk = Nothing
  20. End Function

Saludos ;)


En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Obtener la ruta real de un acceso directo
« Respuesta #2 en: 20 Mayo 2009, 01:53 am »

Bueno, ahora se me ocurren dos maneras, wmi y objshell, pero dejo esta última que son solo un par de líneas  :P

Código
  1. Set Objshell = Createobject("WScript.shell")
  2. Set objLink = Objshell.CreateShortCut(RutaLink)
  3. Msgbox objLink.targetpath
  4. Msgbox objLink.arguments

Con targetpath obtienes la ruta a la que apunta el acceso directo, y con arguments los parámetros que lleva, como ser parámetros que se pasan en el mismo link al ejecutable en cuestión  :P

Por poner un ejemplo, en datos de destino del acceso directo a Nero Express se muestra esto:
"C:\Archivos de programa\Nero\Nero 9\Nero Express\NeroExpress.exe" -ScParameter=30001  /w
Targetpath ... C:\Archivos de programa\Nero\Nero 9\Nero Express\NeroExpress.exe
Arguments ... -ScParameter=30001  /w

Saludos  ;D



P.D: había dejado este post abierto y veo que Karcrack a publicado practicamente lo mismo, pero bueno, a el le faltan los parametros y no me va eso de estar poniendo nombre/autor a funciones tan sencillas  :rolleyes:
« Última modificación: 20 Mayo 2009, 01:56 am por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Obtener la ruta real de un acceso directo
« Respuesta #3 en: 20 Mayo 2009, 15:40 pm »

Bueno, esta funcion la he sacado tal cual del "Karcrack Ransom"... No pienses que he puesto los creditos para que no me copien la funcion >:( :¬¬

Bueno, lo de los parametros lo he puesto porque en el K.R no hace falta para cumplir el cometido ;)

Saludos ;D
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Obtener la ruta real de un acceso directo
« Respuesta #4 en: 20 Mayo 2009, 16:03 pm »

Ya se, lo decía sin animos de ofender a nadie  ;D
Lo que ocurre es que desde hace algún tiempo veo que son muchos los usuarios (de diversos foros) que crean funciones y les ponen los créditos para que luego se los cite, pero en realidad dichas funciones son fundamentalmente 3 líneas , como sigamos así dentro de un tiempo no se va a poder utilizar tranquilo un Msgbox con 3 tabuladores delante porque alguien más lo va a tener en su función  :xD

Citar
Bueno, lo de los parametros lo he puesto porque en el K.R no hace falta para cumplir el cometido ;)
True, en el tuyo no hace falta ya que listas los archivos recientes  :P , pero de cualquier manera arguments es algo que se olvida siempre al trabajar con accesos directos, se asume destino == targetpath, por eso la aclaración  :P

Saludos
« Última modificación: 20 Mayo 2009, 16:14 pm por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Spider-Net


Desconectado Desconectado

Mensajes: 1.165


Un gran poder conlleva una gran responsabilidad


Ver Perfil WWW
Re: Obtener la ruta real de un acceso directo
« Respuesta #5 en: 20 Mayo 2009, 19:47 pm »

Muchísimas gracias a ambos por las respuestas. Me habéis ayudado con mi problema y de paso está muy bien eso de sacar los argumentos porque tienes razón en que el acceso directo no siempre es el targetpath sino que a veces también tienen argumentos así que es bueno tenerlo en cuenta.

Pues eso muchas gracias a los dos y cuando termine el programita lo publicaré por aquí para que opinéis ;)

Un saludo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Obtener ruta UNC de una unidad mapeada con un bat.
Scripting
xavial 0 4,777 Último mensaje 13 Diciembre 2010, 23:32 pm
por xavial
Obtener el país REAL
Programación Visual Basic
extreme69 8 4,720 Último mensaje 8 Marzo 2011, 00:45 am
por R@mi
[Solucionado] Obtener la ruta de todos los procesos en ejecución « 1 2 3 »
.NET (C#, VB.NET, ASP)
Segurida 23 18,456 Último mensaje 30 Mayo 2011, 00:32 am
por seba123neo
Obtener ruta más corta
Programación C/C++
amchacon 8 9,036 Último mensaje 15 Junio 2013, 21:07 pm
por amchacon
Como obtener la ruta de un saveDialog o de un picturecBox
.NET (C#, VB.NET, ASP)
nolasco281 3 3,968 Último mensaje 25 Mayo 2015, 20:16 pm
por nolasco281
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines