Tempo aproximado para leitura: 00:02:05 min
Dúvida
Como mudar o diretório corrente da sessão Progress no Datasul?
Ambiente
Framework - Framework (Linha Datasul) - Progress OpenEdge – Todas as versões
Solução
O diretório corrente das sessões client do Progress no Datasul é o desktop do usuário. Isto faz com que alguns arquivos temporários e vários protrace sejam gerados no desktop, o que não é conveniente.
O diretório corrente de um processo, se não for alterado pela própria aplicação, é o diretório corrente do processo criador. Quem executa o prowin32.exe no Datasul é o java.exe, que por sua vez é iniciado pelo jp2launcher.exe, sendo iniciado pelo iexplore.exe. Como o diretório corrente do Internet Explorer é o desktop, esta configuração é herdada pelos processos até o prowin32.exe.
Um processo pode alterar seu diretório corrente chamando a API SetCurrentDirectory. O programa de alias, indicado no config.xml, é um bom ponto para chamar esta API, pois é o primeiro programa Progress executado na sessão que temos controle.
Neste exemplo foi alterado o programa datasul-configxml-alias.p e adicionadas as seguintes linhas no início para alterar o diretório corrente para c:\temp:
DEFINE VARIABLE intResult AS INTEGER NO-UNDO.
PROCEDURE SetCurrentDirectoryA EXTERNAL "KERNEL32.DLL":
DEFINE INPUT PARAMETER chrCurDir AS CHARACTER.
DEFINE RETURN PARAMETER intResult AS LONG.
END PROCEDURE.
RUN SetCurrentDirectoryA (INPUT "c:\temp", OUTPUT intResult) NO-ERROR.
Esta configuração não resolve todos os problemas, pois alguns arquivos são abertos pelo Progress antes de o programa de alias executar, e consequentemente estão utilizando o diretório corrente antes da alteração. Mas serve para os casos de arquivos temporários gerados pelos programas e dos arquivos protrace.
0 Comentários