como abrir aplicativo via comando

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

como abrir aplicativo via comando

Mensagem por porter »

ola pessoal, gostaria de executar um aplicativo se ele ja nao estiver aberto, quando entrar no sistema, verificar se estiver aberto nao faz nada mas se nao estiver abri-lo, estou fazendo assim, mas nao esta dando certo:

RUN C:\PRWIN\PRWIN.EXE

Tem como verificar se ja está aberto e se nao estiver abri-lo?

obrigado.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

como abrir aplicativo via comando

Mensagem por Pablo César »

Se fosse em modo gráfico para Windows, diria que é muito mais simples. Mas como trata-se de aplicativo feito em Clipper, você vai precisar criar uma bat para gerenciar tudo isso. Essa BAT irá chamar um aplicativo externo que verificará se a sessão DOS estiver aberta. Isso é feito pelo título que aparece (em modo janelado é possível visualizar) o nome. Então faça um teste, chame tal executável na linha de comando e observe qual é o título da janela. Tendo o título você utilizaria um outro aplicativo externo que ao ser chamado com o parâmetro entre aspas (quando o titulo contiver espaços) com o nome do título. Ai o aplicativo irá verificar e criar alguns arquivos temporários. Se a sessão já estiver em execução com tal aplicativo, irá simplesmente chamá-lo trazendo no foco a frente na tela e se não estiver sendo rodado, simplesmente sai para ser carregado a nova sessão. Mas este recurso de chamar a janela e trazer pra frente, funciona bem quando está em modo janelado.

Existe outro aplicativo/biblioteca WAPI feito pelo Maligno que também tem a mesma função de identificar os nomes dos executáveis. Maiores detalhes sobre isso, você encontra neste tópico: https://pctoledo.org/forum/viewto ... 303#p21303 aqui falo justamente desses recursos.

Tem mais um detalhe, se esse título não estiver com definição fixa, isto é, que o usuário venha a mudar de nome, seria conveniente utilizar outro aplicativo para que fixe o nome da sessão.

Também tem um modo muito mais simples, porém não tão seguro. Aqui tem um exemplo e aqui outro. Alguns colegas já comentaram aqui no fórum e exemplificaram. Trata-se de cada vez que chamar o aplicativo, você deve criar um arquivo temporário e depois mandar executar o seu aplicativo externo, mas antes verifique com a CONDIÇÃO se já não existia o arquivo temporário. E depois que sair do aplicativo, exclua o arquivo. Mas o problema disto é que se nessa execução o computador for desligado ou o programa sair inesperadamente, irá ficar o arquivo em aberto ou existente.

Outra coisa que é muito importante é a utilização do BLINKER ao invés do RTLINK para estas questões de execução de aplicatvos externos. Ai ao invés de executar RUN você deve executar o SWPRUNCMD.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Responder