segunda-feira, 29 de outubro de 2012

Como chamar programa a partir de um serviço

Esta é uma dica de Delphi, mas deve ser o mesmo em outras linguagens
Digamos que você possua a seguinte estrutura de arquivos:

pasta
-->serviço.exe
-->arquivo.exe

Se você quiser executar o arquivo.exe a partir de uma função de serviço.exe como por exemplo:

WinExec(PChar('arquivo.exe'), SW_MINIMIZE);

Este código não irá funcionar mesmo ambos estando na mesma pasta, pois o serviço não executa do diretório onde está o arquivo serviço.exe.

Para funcionar é necessário o seguinte procedimento:

ChDir(ExtractFilePath(Application.ExeName));
WinExec(PChar('arquivo.exe'), SW_MINIMIZE);

A procedure ChDir() serve para mudar o diretório atual onde o processo está ativo.
Outra opção é:

WinExec(PChar(ExtractFilePath(Application.ExeName) + 'arquivo.exe'), SW_MINIMIZE);

Desta maneira é executado o programa arquivo.exe utilizado o caminho completo do executável.
Mas neste caso arquivo.exe ainda é executado em outra pasta e não onde este se encontra, então a opção Chdir() ainda é mais recomendada.
Até a próxima dica :D

0 comentários:

Blogger Template by Clairvo