Autor
|
Tema: Obtener la ruta real de un acceso directo (Leído 13,451 veces)
|
Spider-Net
Desconectado
Mensajes: 1.165
Un gran poder conlleva una gran responsabilidad
|
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
Mensajes: 2.416
Se siente observado ¬¬'
|
Esta es una función de este proyecto que codeé para el Abril Negro : '--------------------------------------------------------------------------------------- ' Procedimiento : GetLnkTarget ' Autor : Karcrack ' Fecha : 28/04/2009 ' Parametro(s) : sPath -> Ruta del fichero *.lnk ' Return : La ruta a la que apunta el fichero *.lnk '--------------------------------------------------------------------------------------- Private Function GetLnkTarget(ByVal sPath As String) As String Dim WSH As Object Dim oShellLnk As Object Set WSH = CreateObject("WScript.Shell") Set oShellLnk = WSH.CreateShortcut(sPath) GetLnkTarget = oShellLnk.TargetPath Set WSH = Nothing Set oShellLnk = Nothing End Function
Saludos
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Bueno, ahora se me ocurren dos maneras, wmi y objshell, pero dejo esta última que son solo un par de líneas Set Objshell = Createobject("WScript.shell") Set objLink = Objshell.CreateShortCut(RutaLink) Msgbox objLink.targetpath 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 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 /wTargetpath ... C:\Archivos de programa\Nero\Nero 9\Nero Express\NeroExpress.exeArguments ... -ScParameter=30001 /wSaludos 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
|
|
« Ú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
Mensajes: 2.416
Se siente observado ¬¬'
|
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
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Ya se, lo decía sin animos de ofender a nadie 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 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 , 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 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
Mensajes: 1.165
Un gran poder conlleva una gran responsabilidad
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Obtener ruta UNC de una unidad mapeada con un bat.
Scripting
|
xavial
|
0
|
4,777
|
13 Diciembre 2010, 23:32 pm
por xavial
|
|
|
Obtener el país REAL
Programación Visual Basic
|
extreme69
|
8
|
4,720
|
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
|
30 Mayo 2011, 00:32 am
por seba123neo
|
|
|
Obtener ruta más corta
Programación C/C++
|
amchacon
|
8
|
9,036
|
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
|
25 Mayo 2015, 20:16 pm
por nolasco281
|
|