Kbase 43648: Como mudar o diretório corrente da sessão Progress no Datasul 10 / 11 / 12
Autor |
  Marcos Kirchner - CAT |
Acesso |
  Público |
Publicação |
  1/12/2011 |
|
O diretório corrente das sessões client do Progress no Datasul 11 é 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 chama o prowin32.exe no caso do Datasul 11 é o java.exe, que por sua vez é iniciado pelo jp2launcher.exe, que é iniciado pelo iexplore.exe. Como o diretório corrente do IE é o Desktop, esta configuração foi 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.