Gravando na pasta Desktop e Temp do usuario (windows)


Existe uma função no ADVPL que permite você gravar na pasta temporária do usuário (windows) logado. A função é a GetTempPath Descrição: Retorna o caminho da pasta temporária do sistema atual. Sintaxe: GetTempPath() Resultado: "C:\Users\usuario\AppData\Local\Temp\" Agora, pegar a pasta Desktop, não achei função mas utilizo uma bem simples, sabendo que a pasta desktop do usuário está na mesma raiz da pasta AppData, subtituo tudo que vier a partir da pasta AppData por Desktop, por exemplo. Exemplo: cTemp := GetTempPath() Retorno = C:\Users\usuario\AppData\Local\Temp\ Removo AppData\Local\Temp\ e troco por Desktop\ Na verdade posso colocar qualquer outra pasta que esteja na mesma raiz. A função abaixo foi testada nas versões Windows XP,Windows 7 e 8.

#Include "Protheus.ch"
User function fdesktop()
 Local cTemp := GetTempPath() //capturo a pasta temporária do usuario

 //Utilizarei a função AT para pegar a posição onde começa o texto \AppData
 //irei usar a função substring para pegar da 1ª posição até a posição do texto
 //informado na função AT
 Local cRaiz := substr(cTemp,1,AT("\AppData",cTemp))

 //Agora incluo a pasta desktop ou qualquer outra que esteja na mesma raiz
 Local cDesktop := cRaiz + "desktop\"
 Local cDocument:= cRaiz + "Documents\"

 //Irei gravar um arquivo chamado teste.txt com o conteudo teste dentro dele
 memowrite(cDesktop+"meudesktop.txt","teste desktop")
 //ou
 memowrite(cDocument+"meusdocumentos.txt","teste meus documentos")
Return