Abrindo arquivos via AdvPL

Olá pessoal…

Hoje será a primeira postagem abordando a linguagem AdvPL (Advanced Protheus Language), e irei mostrar como abrir arquivos de qualquer extensão via código fonte no Protheus.


Primeiramente, deve se ter o diretório e o nome do arquivo (ex.: C:teste.txt), depois, basta executar o comando ShellExecute via código fonte, passando a instrução open, e o arquivo referenciado, com isso, o Protheus irá pedir ao sistema operacional que abra o arquivo com o programa padrão.

#Include "Protheus.ch"

/*/{Protheus.doc} zAbreArq
Função para abrir arquivos conforme preferências do Sistema Operacional
@author Atilio
@since 06/08/2014
@version 1.0
	@param cDirP, Caracter, Diretório do arquivo
	@param cNomeArqP, Caracter, Nome do arquivo
	@example
	//...
	u_zAbreArq("C:\","teste.txt")
	u_zAbreArq("E:\Documentos\","novo.pdf")
	//...
	@see https://terminaldeinformacao.com/advpl/
/*/

User Function zAbreArq(cDirP, cNomeArqP)
	Local aArea:= GetArea()
	
	//Tentando abrir o objeto
	nRet := ShellExecute("open", cNomeArqP, "", cDirP, 1)
	
	//Se houver algum erro
	If nRet <= 32
		MsgStop("Não foi possível abrir o arquivo " +cDirP+cNomeArqP+ "!", "Atenção")
	EndIf 
	
	RestArea(aArea)
Return

Referências: tdn.totvs.com/display/tec/ShellExecute

Bom pessoal, por hoje é só.
Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

6 Responses

  1. Arthur Lima disse:

    Muito bom o post. Encontrei também um blog com dicas de Protheus, ADVPL e até alguns scritps SQL com recursos para acessar o dadosadv do Protheus

    Parabéns.

    • Dan_Atilio disse:

      Boa noite Arthur.
      Muito Obrigado pelo contato.
      Não costumo postar links de sites que não são meus parceiros, caso faça parte dessa equipe e quiser fazer uma parceria, pode entrar em contato.
      Um grande abraço.

  2. Robson disse:

    Boa noite.
    E o procedimento para acessar pasta em um servidor?
    Devo no local da pasta inserir o IP e a pasta?

    Bem como solicitar permissão para TI liberar o acesso no caso?

    • Bom dia Robson, tudo joia?

      Eu nunca precisei acessar um arquivo de um servidor externo que não fosse o server do Protheus.

      Mas acho que a alternativa mais fácil, é você mapear o servidor, por exemplo, se for Windows, você mapearia em um drive X: ou Z: e ai quando fosse usar os comandos para ler pastas e arquivos, apontaria pra esse drive mapeado.

      Ai para fazer o mapeamento pode ser manualmente pelo Windows Explorer ou você pode usar o comando “net use” e até acioná-lo via AdvPL (com WaitRun, ShellExecute ou WinExec).

      Abraços.

  3. Robson disse:

    Entendi.
    Show, obrigado.

    Temos uma tela de apontamento de produção, e nossos usuários não tem acesso ao desenho, pois acaba sujando os desenhos físicos, ou perdendo.
    Criei um botão que acessa os desenhos para que o operador consiga abri-lo e tirar duvidas qto as medidas etc., mas não quero colocar na maquina local, porque são mtas maquias e muitos desenhos. Então vou deixar em uma pasta no servidor.

    Obrigado.

Deixe uma resposta para Arthur LimaCancelar resposta

Terminal de Informação