mkyx Posted August 17, 2008 Report Share Posted August 17, 2008 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 Quote Link to comment Share on other sites More sharing options...
mkyx Posted August 17, 2008 Author Report Share Posted August 17, 2008 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 Quote Link to comment Share on other sites More sharing options...
Geraldo_Andrade Posted March 13, 2011 Report Share Posted March 13, 2011 Bom dia Ate hoje nao consegui preencher INICIAR EM com o path do sistema, alguem ja conseguiu? Geraldo Andrade geraldo_andrade@hotmail.com Quote Link to comment Share on other sites More sharing options...
sygecom Posted March 20, 2011 Report Share Posted March 20, 2011 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 Quote Link to comment Share on other sites More sharing options...
Geraldo_Andrade Posted April 17, 2011 Report Share Posted April 17, 2011 Valeu, Funcionou perfeitamente, obrigado. Geraldo Andrade geraldo_andrade@hotmail.com Quote Link to comment Share on other sites More sharing options...
HERGON Posted April 18, 2011 Report Share Posted April 18, 2011 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 Quote Link to comment Share on other sites More sharing options...
HERGON Posted April 19, 2011 Report Share Posted April 19, 2011 Olá Ninguém sabe como pegar o PATH para criar o atalho no menu "Meus Arquivos de Programas"? Herberson Gontijo Ponteware Software Quote Link to comment Share on other sites More sharing options...
Luisão Posted April 19, 2011 Report Share Posted April 19, 2011 Herberson, faça assim: cVar:= GetEvn(PROGRAMFILES) Para testar, vá no Executar e digite %PROGRAMFILES% 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 Quote Link to comment Share on other sites More sharing options...
HERGON Posted April 23, 2011 Report Share Posted April 23, 2011 Olá Luisão citação:Herberson, faça assim:cVar:= GetEvn(PROGRAMFILES) Para testar, vá no Executar e digite %PROGRAMFILES% id=quote>id=quote>Obrigado pela resposta... Deu certinho. Herberson Gontijo Ponteware Software Quote Link to comment Share on other sites More sharing options...
Luisão Posted April 25, 2011 Report Share Posted April 25, 2011 Só agora que eu vi que postei errado, mas ainda bem que você soube corrigir. Na verdade é cVar:= GetEnv("PROGRAMFILES") 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.