Crear archivo lnk
- Sebastián Almirón
- Posts: 157
- Joined: Mon Dec 12, 2005 9:56 am
- Location: Moralzarzal - Spain
Crear archivo lnk
He hecho un programa de instalación de una aplicación, lo he empaquetado todo con el iexpress para que los clientes se lo puedan bajar de mi servidor ftp.
Durante el proceso de instalación me gustaría darles la posibilidad de que se cree un acceso directo a la aplicación en el escritorio. Sobre como copiar el archivo .lnk al escritorio del usuario no tengo problema, con Gete("USERPROFILE").
¿ Pero como puedo modificar el archivo .lnk (o crear uno nuevo) que lleva originalmente para indicarle que está instalada en el directorio que ha elegido el usuario y que se ejecute en ese directorio.
Saludos y buen fin de semana.
Durante el proceso de instalación me gustaría darles la posibilidad de que se cree un acceso directo a la aplicación en el escritorio. Sobre como copiar el archivo .lnk al escritorio del usuario no tengo problema, con Gete("USERPROFILE").
¿ Pero como puedo modificar el archivo .lnk (o crear uno nuevo) que lleva originalmente para indicarle que está instalada en el directorio que ha elegido el usuario y que se ejecute en ese directorio.
Saludos y buen fin de semana.
Re: Crear archivo lnk
Sebastian
Así se hace:
Espero te sirva
Saludos,
Adhemar
Así se hace:
Code: Select all | Expand
cEscritorio:=C_getspecialfolder(CSIDL_DESKTOPDIRECTORY)
pLnk( 'C:\VIADELSISTEMA\SISTEMA.EXE',cEscritorio+"\Sistema.lnk",,'C:\VIADELSISTEMA\SISTEMA.EXE' )
*Aquí la función
FUNCTION pLnk( cFile, cNameLnk, cWorkingDir, cIcon ) //Crear acceso directo
LOCAL oShell, oLnk
DEFAULT cFile := ''
DEFAULT cNameLnk := ''
DEFAULT cWorkingDir := ''
DEFAULT cIcon := ''
IF !File( cFile )
RETU .F.
ENDIF
IF Empty( cNameLnk )
cNameLnk := cFilePath( cFile ) + cFileNoExt( cFile ) + '.lnk'
ENDIF
IF Empty( cWorkingDir )
cWorkingDir := cFilePath( cFile )
ENDIF
TRY
oShell := CreateObject( "Wscript.Shell" )
CATCH
MsgAlert( 'Error Create object WScript.Shell', 'Error' )
RETU .F.
END
oLnk := oShell:CreateShortcut( cNameLnk )
oLnk:TargetPath := cFile
oLnk:WindowStyle := 1 //1=Normal 2=Minimizada 3=Maximizada
IF !Empty( cIcon )
oLnk:IconLocation := cIcon
ENDIF
IF !Empty( cWorkingDir )
oLnk:WorkingDirectory := cWorkingDir
ENDIF
oLnk:Save()
Return .T.
Espero te sirva
Saludos,
Adhemar
Saludos,
Adhemar C.
Adhemar C.
Re: Crear archivo lnk
Adhemar, al compilar me arroja este error
y corresponde a esta linea
Un par de preguntas, supongo que CSIDL_DESKTOPDIRECTORY es una constante, cual es su valor ? y C_getspecialfolder() es una función que se encuentra en Harbour o xHarbour o en ambos ?
Desde ya muchísimas gracias por este aporte.
Saludos
Code: Select all | Expand
crear_acceso_directo.prg(6) Error E0030 Syntax error "syntax error at ':'"
y corresponde a esta linea
Code: Select all | Expand
cEscritorio := C_getspecialfolder( CSIDL_DESKTOPDIRECTORY )
Un par de preguntas, supongo que CSIDL_DESKTOPDIRECTORY es una constante, cual es su valor ? y C_getspecialfolder() es una función que se encuentra en Harbour o xHarbour o en ambos ?
Desde ya muchísimas gracias por este aporte.
Saludos
Last edited by horacio on Sat Feb 01, 2014 10:36 am, edited 1 time in total.
Re: Crear archivo lnk
Horacio
Aquí va el valor
Saludos,
Adhemar
Aquí va el valor
Code: Select all | Expand
#define CSIDL_DESKTOPDIRECTORY 0x0010
Saludos,
Adhemar
Saludos,
Adhemar C.
Adhemar C.
- FranciscoA
- Posts: 2162
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Crear archivo lnk
y C_getspecialfolder() es una función que se encuentra en Harbour o xHarbour o en ambos ?
+1
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
- FranciscoA
- Posts: 2162
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Crear archivo lnk
Aquí la función
Saludos,
Adhemar
Code: Select all | Expand
#pragma BEGINDUMP
#include <windows.h>
#include <shlobj.h>
#include "hbapi.h"
#include "hbapiitm.h"
HB_FUNC( C_GETSPECIALFOLDER )
{
char *lpBuffer = (char*) hb_xgrab( MAX_PATH+1);
LPITEMIDLIST pidlBrowse;
SHGetSpecialFolderLocation(GetActiveWindow(), hb_parni(1), &pidlBrowse)
;
SHGetPathFromIDList(pidlBrowse, lpBuffer);
hb_retc(lpBuffer);
hb_xfree( lpBuffer);
}
#pragma ENDDUMP
Saludos,
Adhemar
Saludos,
Adhemar C.
Adhemar C.
- informaticaeloy
- Posts: 118
- Joined: Fri Dec 20, 2013 10:39 am
- Location: Zaragoza, España
- Contact:
Re: Crear archivo lnk
Hola,
habéis tenido en cuenta si el usuario al instalar el programa puede cambiar de ruta ? si lo cambia, tal vez no funcione el link.
habéis tenido en cuenta si el usuario al instalar el programa puede cambiar de ruta ? si lo cambia, tal vez no funcione el link.
Windows 10 + FWH 20.08 + BCC 7.4 + Harbour 3.2.0 + PSPad 5.0.3
- Sebastián Almirón
- Posts: 157
- Joined: Mon Dec 12, 2005 9:56 am
- Location: Moralzarzal - Spain
-
- Posts: 20
- Joined: Fri Apr 25, 2014 3:05 pm