FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Crear archivo lnk
Posts: 166
Joined: Mon Dec 12, 2005 09:56 AM
Crear archivo lnk
Posted: Fri Jan 31, 2014 06:06 PM

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.

Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Crear archivo lnk
Posted: Fri Jan 31, 2014 06:21 PM
Sebastian

As铆 se hace:
Code (fw): Select all Collapse
 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.
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Crear archivo lnk
Posted: Fri Jan 31, 2014 09:11 PM
Adhemar, al compilar me arroja este error

Code (fw): Select all Collapse
crear_acceso_directo.prg(6) Error E0030 聽Syntax error "syntax error at ':'"


y corresponde a esta linea

Code (fw): Select all Collapse
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
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Crear archivo lnk
Posted: Fri Jan 31, 2014 09:39 PM
Horacio

Aqu铆 va el valor

Code (fw): Select all Collapse
#define CSIDL_DESKTOPDIRECTORY     0x0010


Saludos,

Adhemar
Saludos,



Adhemar C.
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Crear archivo lnk
Posted: Sat Feb 01, 2014 03:55 AM
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
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Crear archivo lnk
Posted: Sat Feb 01, 2014 04:06 AM
Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Crear archivo lnk
Posted: Sat Feb 01, 2014 11:27 AM
Aqu铆 la funci贸n
Code (fw): Select all Collapse
#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.
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Crear archivo lnk
Posted: Sat Feb 01, 2014 01:09 PM

Adhemar, muchas gracias. Funcion贸 perfectamente.

Saludos

Posts: 118
Joined: Fri Dec 20, 2013 10:39 AM
Re: Crear archivo lnk
Posted: Sun Feb 02, 2014 09:30 PM

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.

Windows 10 + FWH 20.08 + BCC 7.4 + Harbour 3.2.0 + PSPad 5.0.3
Posts: 166
Joined: Mon Dec 12, 2005 09:56 AM
Re: Crear archivo lnk
Posted: Mon Feb 03, 2014 09:55 AM

Muchas gracias Adhemar, funciona perfecto.

Saludos

Posts: 20
Joined: Fri Apr 25, 2014 03:05 PM
Re: Crear archivo lnk
Posted: Sun Jun 05, 2016 03:52 AM

Gracias funiciona excelente

Continue the discussion