Jump to content
Fivewin Brasil

Criar link do desktop do windows (resolvido)


mkyx

Recommended Posts

Olá pessoal,

enfim conseguí o que queria:

as funções _getspecpath e createfolder funcionam bem, mas

a função CREATELINK, não preenche o campo INICIAR EM, no atalho criado no desktop.

Alguém do forum usa ou sabe o porquê, onde está o erro?

Obrigado.

Eis o link para quem quiser baixar e testar:

http://www.fivewin.com.br/ExibeDicas.asp?Id=132

// Listagem do módulos que criar links no desktop

***************************************************************************

* GetSpecPath( nFolder ) -> cPath *

* *

* Obtiene el path correspondiente a una carpeta especial de windows. *

* - puede ser: *

* CSIDL_DESKTOP 0 *

* CSIDL_PROGRAMS 2 *

* CSIDL_STARTUP 7 *

* CSIDL_STARTMENU 11 *

* *

* Hay mas valores, que podeis ver en el fichero ShlObj.h del BCC 5.5 *

* *

***************************************************************************

* CreateLink( cLink, cExe, cIco, nIco ) -> nResult *

* *

* Crea un acceso directo. *

* *

* - es el nombre completo del fichero de acceso directo, sin *

* la extension. Si creais un acceso directo a un programa MS-DOS, *

* se creara un .PIF estandar con las siguientes opciones cambiadas: *

* - Cerrar al salir: marcado *

* - Pantalla completa *

* - Permitir protector de pantalla: NO marcado *

* - Combinacion de teclas ALT+ENTRAR: No marcado *

* *

* - es el nombre completo del programa al que quereis hacer el *

* acceso directo. *

* *

* - es el nombre del fichero que contiene el icono. Puede ser *

* un .EXE, un .DLL o un .ICO *

* *

* - es el lugar que ocupa el icono dentro del fichero que *

* contiene los iconos. *

* *

***************************************************************************

* CreateFolder( cFolder ) -> lOk *

* *

* Crea una carpeta. *

* - es el nombre completo de la carpeta. *

* *

***************************************************************************

* Nota: las tres funciones trabajan con nombres largos de archivos. *

* *

***************************************************************************

#include "fivewin.ch"

#include "DLL.CH"

FUNCTION MAIN()

LOCAL cPath:=SPACE(256)

** DEFINE DIALOG ODLG FROM 10,10 TO 40,100

_GetSpecPath(0, cPath)

cPath:=allTRIM(cPath)

cPath:=LEFT(cPath, LEN(cPath)-1)

pp:=alltrim(getenv("systemroot"))+"\system32\shell32.dll"

CreateLink( cpath+"\Vendas", "d:\sys\tela.exe","","")

** CreateFolder( cpath+"\vendas" )

** ACTIVATE DIALOG ODLG

RETURN .T.

//-------------------------------------------------------------------------

DLL32 FUNCTION CreateLink(cLink AS LPSTR, cExe AS LPSTR, cIco AS LPSTR, ;

nIco AS DWORD) AS DWORD PASCAL LIB "FWSHELL.DLL"

// nIco AS DWORD) AS DWORD PASCAL LIB "FWSHELL.DLL"

//-------------------------------------------------------------------------

DLL32 FUNCTION _GetSpecPath(nFolder AS DWORD, cPath AS LPSTR) AS DWORD ;

FROM "GetSpecPath" LIB "FWSHELL.DLL"

//-------------------------------------------------------------------------

DLL32 FUNCTION CreateFolder(cFolder AS LPSTR) AS BOOL ;

FROM "CreateFolder" LIB "FWSHELL.DLL"

//-------------------------------------------------------------------------

Pompeo

Guaratinguetá - SP

(12) 9777-9386

www.adentech.com.br

www.rmahost.com

xH 0.99.50 xH 8.02 com BCC 55

Editado por - mkyx on 18/08/2008 01:29:49

Editado por - mkyx on 18/08/2008 01:52:25

Link to comment
Share on other sites

Olá pessoal,

enfim conseguí o que queria:

as funções _getspecpath e createfolder funcionam bem, mas

a função CREATELINK, não preenche o campo INICIAR EM, no atalho criado no desktop.

Alguém do forum usa ou sabe o porquê, onde está o erro?

Obrigado.

Eis o link para quem quiser baixar e testar:

http://www.fivewin.com.br/ExibeDicas.asp?Id=132

// Listagem do módulos que criar links no desktop

***************************************************************************

* GetSpecPath( nFolder ) -> cPath *

* *

* Obtiene el path correspondiente a una carpeta especial de windows. *

* - puede ser: *

* CSIDL_DESKTOP 0 *

* CSIDL_PROGRAMS 2 *

* CSIDL_STARTUP 7 *

* CSIDL_STARTMENU 11 *

* *

* Hay mas valores, que podeis ver en el fichero ShlObj.h del BCC 5.5 *

* *

***************************************************************************

* CreateLink( cLink, cExe, cIco, nIco ) -> nResult *

* *

* Crea un acceso directo. *

* *

* - es el nombre completo del fichero de acceso directo, sin *

* la extension. Si creais un acceso directo a un programa MS-DOS, *

* se creara un .PIF estandar con las siguientes opciones cambiadas: *

* - Cerrar al salir: marcado *

* - Pantalla completa *

* - Permitir protector de pantalla: NO marcado *

* - Combinacion de teclas ALT+ENTRAR: No marcado *

* *

* - es el nombre completo del programa al que quereis hacer el *

* acceso directo. *

* *

* - es el nombre del fichero que contiene el icono. Puede ser *

* un .EXE, un .DLL o un .ICO *

* *

* - es el lugar que ocupa el icono dentro del fichero que *

* contiene los iconos. *

* *

***************************************************************************

* CreateFolder( cFolder ) -> lOk *

* *

* Crea una carpeta. *

* - es el nombre completo de la carpeta. *

* *

***************************************************************************

* Nota: las tres funciones trabajan con nombres largos de archivos. *

* *

***************************************************************************

#include "fivewin.ch"

#include "DLL.CH"

FUNCTION MAIN()

LOCAL cPath:=SPACE(256)

** DEFINE DIALOG ODLG FROM 10,10 TO 40,100

_GetSpecPath(0, cPath)

cPath:=allTRIM(cPath)

cPath:=LEFT(cPath, LEN(cPath)-1)

pp:=alltrim(getenv("systemroot"))+"\system32\shell32.dll"

CreateLink( cpath+"\Vendas", "d:\sys\tela.exe","","")

** CreateFolder( cpath+"\vendas" )

** ACTIVATE DIALOG ODLG

RETURN .T.

//-------------------------------------------------------------------------

DLL32 FUNCTION CreateLink(cLink AS LPSTR, cExe AS LPSTR, cIco AS LPSTR, ;

nIco AS DWORD) AS DWORD PASCAL LIB "FWSHELL.DLL"

// nIco AS DWORD) AS DWORD PASCAL LIB "FWSHELL.DLL"

//-------------------------------------------------------------------------

DLL32 FUNCTION _GetSpecPath(nFolder AS DWORD, cPath AS LPSTR) AS DWORD ;

FROM "GetSpecPath" LIB "FWSHELL.DLL"

//-------------------------------------------------------------------------

DLL32 FUNCTION CreateFolder(cFolder AS LPSTR) AS BOOL ;

FROM "CreateFolder" LIB "FWSHELL.DLL"

//-------------------------------------------------------------------------

Pompeo

Guaratinguetá - SP

(12) 9777-9386

www.adentech.com.br

www.rmahost.com

xH 0.99.50 xH 8.02 com BCC 55

Editado por - mkyx on 18/08/2008 01:29:49

Editado por - mkyx on 18/08/2008 01:52:25

Link to comment
Share on other sites

  • 2 years later...

Exemplo:


*********************

FUNCTION CRIAR_ATALHO

*********************

Local aShortCut, oWSHShell

IF FILE(GETENV('HOMEDRIVE')+GETENV('HOMEPATH')+'\Desktop\sistema.lnk')

RETURN

ENDIF

IF !MsgYesNo('Não foi localizado o Icone na area de Trabalho para o Sistema, Deseja Criar Agora ?','Aviso do Sistema')

RETURN

ENDIF

TRY

oWSHShell:= CreateObject("WScript.Shell")

CATCH error

ShowMsg('Não foi possivel criar o icone na area de trabalho, Favor revisar')

RETURN .F.

END

IF IsDirectory(GETENV("HOMEDRIVE")+GETENV("HOMEPATH")+"\Desktop" ) = .F.

Release oWSHShell

RETURN .F.

ENDIF

aShortCut:= oWSHShell:CreateShortcut(GETENV('HOMEDRIVE')+GETENV('HOMEPATH')+'\Desktop\sistema.lnk')

aShortCut:TargetPath := CAMINHO_EXE()+'\'+ Nomeexecutavel() //GETENV("HOMEDRIVE")+GETENV("HOMEPATH")+"\Desktop"

aShortCut:WorkingDirectory := CAMINHO_EXE()+'\'

//aShortCut:IconLocation := "C:\sistem\icone.ico" //icone do sistema

aShortCut:Save()

Release oWSHShell

IF !FILE(GETENV('HOMEDRIVE')+GETENV('HOMEPATH')+'\Desktop\sistema.lnk')

Return .F.

ENDIF

Return .T.

*NomeExecutavel() // verefica o nome

*NomeExecutavel(.t.) // verefica o caminho

********************************************************************************

FUNCTION NOMEEXECUTAVEL(lPath)

LOCAL nPos, cRet

If Empty(lpath)

nPos:= RAT("\", hb_argv(0))

cRet:= substr(hb_argv(0), nPos+1)

else

cRet:= hb_argv(0)

endif

Return cRet

********************

*Retorna o caminho do EXE

FUNCTION CAMINHO_EXE

Return(Substr(Nomeexecutavel(.t.),1,(len(Nomeexecutavel(.t.))- len(Nomeexecutavel()))-1 ))

id=code>id=code>

Leonardo Machado

Alvorada-RS

Hwgui + x[H]arbour

leonardodemachado@hotmail.com

Editado por - sygecom on 20/03/2011 11:01:17

Link to comment
Share on other sites

  • 4 weeks later...

Olá

Bom dia

Legal isso de criar o atalho na área de trabalho direto via código. Uma idéia que me vem agora é o seguinte...

Por algum motivo o usuário perdeu o atalho da área de trabalho, então ele teria que procurar via windows explorer/meu computador para entrar no sistema, e só depois que entrar no sistema será criado novamente o atalho.

Não seria interessante criar também em "Meus Arquivos de Programas"? Pq se perder o atalho na área de trabalho poderia entrar no sistema via "Meus Arquvios de Programa" e recriar o atalho.

Como pegar o PATH para criar em "Meus Arquivos de Programas"?

Herberson Gontijo

Ponteware Software

h15.jpg

Link to comment
Share on other sites

Herberson, faça assim:

cVar:= GetEvn(PROGRAMFILES)

Para testar, vá no Executar e digite %PROGRAMFILES%

a.png

Luis Fernando Jr. (Luisão)

Leme/SP

--

FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY

juninho.luisao@gmail.com

juninho_luisao@hotmail.com

Skype luis.fernando.jr

Link to comment
Share on other sites

Só agora que eu vi que postei errado, mas ainda bem que você soube corrigir.

Na verdade é cVar:= GetEnv("PROGRAMFILES")

a.png

Luis Fernando Jr. (Luisão)

Leme/SP

--

FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY

juninho.luisao@gmail.com

juninho_luisao@hotmail.com

Skype luis.fernando.jr

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...