Clipper On Line • Ver Tópico - Utilizando o comando RUN

Utilizando o comando RUN

Discussão sobre a linguagem CA-Clipper.

Moderador: Moderadores

 

Utilizando o comando RUN

Mensagempor ssflavio » 26 Fev 2010 18:29

Boa Tarde a todos!

Dentro de meu programa, utilizo o comando run para chamar alguns programas externo que ajudam o sitema como um todo.
A dúvida é a seguinte: quando rodo um programa externo, como por exemplo o WORD, o programa em clipper fica aguardando a janela do word ser fechada para ele continuar, como se fosse uma janela modal. Tem como fazer uma chamada a um programa externo e o clipper continuar rodando o que esta fazendo (uma chamada não modal)?

abraços

Flávio
Flávio dos Santos Szelbracikowski
ssflavio@osite.com.br
ssflavio
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 86
Data de registro: 10 Jul 2008 09:57
Cidade/Estado: São Paulo / SP
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes

Utilizando o comando RUN

Mensagempor Pablo César » 27 Fev 2010 21:17

Gostei da utilização do termo "modal". Ja tentou executar a sua aplicação desde um arquivo batch ? Ou utilizando o arquivo START do SO ?

Eu fiz uns testes e não ví nada que estivesse prendendo minha aplicação principal, como você menciona. Olhe o meu exemplo:

? "pressione uma tecla para chamar o Word"
INKEY(0)
// cRoda:="START C:\ARQUIV~1\MICROS~2\OFFICE11\WINWORD.EXE"
// cRoda:="START /W C:\ARQUIV~1\MICROS~2\OFFICE11\WINWORD.EXE"
cRoda:="C:\ARQUIV~1\MICROS~2\OFFICE11\WINWORD.EXE"
RUN (cRoda)
? "Retornou a aplicacao Clipper"
INKEY(0)


No exemplo acima, o START.EXE precisei copiar para o diretório onde se encontra a aplicação e o checar o PATH onde se encontra o WINWORD.EXE.

Agora se você estava se referindo a manter o foco da sessão principal, então eu usaria o WINDOW2TOP(VAL(VMYHAND)) da WAPI.LIB do Maligno que retorna a aplicação, mas antes de usar essa função você precisaria antes de executar aplicação Windows, executar o GetMyHandle().

E se optar por utilizar a execução mediante o arquivo batch, daí terias que utilizar o WAPI em modo de linha de comando, veja esta mensgaem: viewtopic.php?f=1&t=5708&p=24095#p24095

Explique qual é a sua situação, pois eu com o primeiro exemplo que postei, não conseguí reproduzir a situação que você apresentou. E se houverem dúvidas, poderei lhe ajudar se postar com detalhes.
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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Re: Utilizando o comando RUN

Mensagempor ssflavio » 01 Mar 2010 13:53

Pablo,

Antes de mais nada gostaria de agradecer seu empenho e eficiência.
Vamos ver se eu consigo dar uma iluminada na situação:
1. Utilizo o Windows XP SP 3 para rodar minha aplicação
2. Atualmente uso o WORD para visualizar relatórios, criei uma rotina de conversão para RTF, assim resolvo vários problemas de uma só vez, como imprimir em qualquer impressora da rede, gerar arquivos pdf e enviar por email.
3. Coloquei o path do WINWORD no path da máquina

Quando rodo o WORD, tudo funciona corretamente.
O programa em clipper fica aguardando o encerramento do WORD para continuar.
Quando encerro o WORD o meu programa em Clipper volta a funcionar (por isso que fiz referência ao modal)

para rodadar esta aplicação, é perfeito.
Só que estou com uma outra ideia aquí na minha cabeça, que é a apresentação de imágens em uma janela auxiliar, rodando um programa para visualização de imagens chamado IrfanView. Desta forma eu deveria disparar uma chamada ao programa IrfanView e o clipper continuar trabalhando normalmente, nao poderia ficar esperando que a janela da imagem fosse fechada.
Tenho duas aplicações para isso: 1. Mostrar fotos de Produtos; 2. Mostrar documentos digitalizados pelo cliente (ex: canhotos de NF assinados ou de recebimento de mercadorias).

ps. o comando START não funcionou, indica que não foi encontrado. Fiz uma busca no meu C e nao achei nada com o nome START. Será que estou comendo bola????

mais uma vez

OBRIGADO PELA FORÇA

Flávio
Flávio dos Santos Szelbracikowski
ssflavio@osite.com.br
ssflavio
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 86
Data de registro: 10 Jul 2008 09:57
Cidade/Estado: São Paulo / SP
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes

Re: Utilizando o comando RUN

Mensagempor Euclides » 02 Mar 2010 09:15

Flávio,
Em casos assim, eu utilizava ( há MUITO TEMPO :-) ) assim:

swpruncmd("cmd /c start suaimagem.jpg",0,"","")

Não se esqueça de utilizar o FreeTSlice() senão a ´carroça´não anda...
T+
Euclides
Euclides
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 154
Data de registro: 12 Mai 2007 14:07
Cidade/Estado: São Paulo, Capital
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Re: Utilizando o comando RUN

Mensagempor sygecom » 02 Mar 2010 10:10

Apenas para lembrar que o swpruncmd() só funciona com o Blinker.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7017
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 133 vezes

Re: Utilizando o comando RUN

Mensagempor Euclides » 02 Mar 2010 10:41

Ceeerto, Leonardo.
Não utilizando o Blinker, poderia ser:
RUN("cmd /c start dateisleap.txt",0,"","")

... e no caso de Windows 98...
RUN("command /c start dateisleap.txt",0,"","")

acho que isso complementa o assunto
T+ Euclides
Euclides
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 154
Data de registro: 12 Mai 2007 14:07
Cidade/Estado: São Paulo, Capital
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Re: Utilizando o comando RUN

Mensagempor sygecom » 02 Mar 2010 13:25

E achoooo que START somente com a Familia NT(não tenho certeza, pois não tenho um 98 para poder testar agora)
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7017
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 133 vezes

Utilizando o comando RUN

Mensagempor Pablo César » 02 Mar 2010 14:01

A questão da falta do START.EXE, eu resolví copiando na pasta onde se encontra o sistema, de outra forma precisaria colocar o path onde se encontra. No meu PC com WINXP, também não possuía, pois o CMD.EXE vem substituir o START no XP (seria quase a mesma coisa). Então decidí copiar o START.EXE do WIN98 e funcionou. Mas poderia também utilizar o CMD em troca. Mas como tenha clientes com o meu sistema que ora possuem WIN98 ora WINXP... então optei por copiar o START pis assim garantiria que funcionasse em ambos SO da mesma forma.

Estive fazendo alguns testes e de fato é uma situação dificil de resolver, pois não é sempre que funciona.
A questão de chamar com START /MIN resolve em parte pois a aplicação fica na tela mas não com o foco. Eu coloquei a função do WAPI, mas não é sempre que funciona, ou melhor dito, não sempre se obtém o resultado ideal. Se quiser testar e trabalhar encima, disponibilizei o exemplo em anexo.
Anexos
TESTE14.zip
(144.37 KiB) Baixado 214 vezes
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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Re: Utilizando o comando RUN

Mensagempor ssflavio » 02 Mar 2010 18:22

Gostaria de agradecer a força recebida de todos!!!

consegui resolver o meu problema.

O Pablo fez uma referencia a biblioteca WAPI, inclusive me mandou a lib e o executavel.
Eu já tinha visto referencias a esta biblioteca, para saber se a janela está maximizada ou nao e para setar o foco em determinada janela.
Achei muito legal esta biblioteca, estou dando uma estudada nela.
Não entendi direito, primeiro rodo o WAPI.EXE e depois rodo a aplicacao que contem a biblioteca WAPI?

acho que me empolguei e acabei perdendo o foco do tópico...

abraços

Flávio
Flávio dos Santos Szelbracikowski
ssflavio@osite.com.br
ssflavio
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 86
Data de registro: 10 Jul 2008 09:57
Cidade/Estado: São Paulo / SP
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes

Utilizando o comando RUN

Mensagempor Pablo César » 03 Mar 2010 08:34

acho que me empolguei e acabei perdendo o foco do tópico...
Oi Flávio, para te responder esses detalhes sobre a WAPI, postei uma mensagem no tópico da WAPI: viewtopic.php?f=39&t=4328&p=58786#p58786

Lá você encontrará muito mais explicações sobre o produto do Maligno.

consegui resolver o meu problema.
Você Flávio verificou se funcionou todas as vezes que executou o exemplo. Como foi que resolveu ? Como eu tinha dito na minha mensagem anterior, não conseguí obter o foco da sessão em todas as tentativas (algumas vezes funcionava outras não, por isso repetí o WINDOW2TOP(nMyHandl). Acho que você conseguiu um resultado melhor ao chamar sua aplicação GUI em modo minimizado através do START.EXE, certo ? Experimente utilizar o meu exemplo em modo janelado e nos dê um retorno.
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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Re: Utilizando o comando RUN

Mensagempor ssflavio » 05 Mar 2010 13:02

Pablo,

Desculpa a demora para te responder.
Inicialmente fiz um teste rápido e achei que funcionava corretamente, e realmente não voltava o foco.
Eu não usava nem conhecia a WAPI. Tive que baixa-la e dar uma estudada para utiliza-la e principalmente link-editala junto com o programa (tem o macetinho da CaTools).
Realmente o problema do foco é um caso sério. Fiz vários testes, até que cheguei numa configuração aceitavel
aApp := GetAppsInfo()
window2top(nMyHandl)
window2top(nMyHandl)
Aparentemente o SO tem que ter um tempo para poder fazer o foco de uma janela. Sei lá acho que estou é viajando....
Estou enviando o teste que fiz para voce dar uma olhada.

Bom final de semana

Flávio
Pablo.rar
exemplo que funcionou
(52.42 KiB) Baixado 172 vezes
Flávio dos Santos Szelbracikowski
ssflavio@osite.com.br
ssflavio
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 86
Data de registro: 10 Jul 2008 09:57
Cidade/Estado: São Paulo / SP
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes

Utilizando o comando RUN

Mensagempor Pablo César » 05 Mar 2010 22:26

Legal Flavio seu exemplo, funcionou mas somente com a sessão da aplicação Clipper em modo janelado, não funciona em modo tela cheia. Outra coisa estranha foi a utilização repetida (dois comandos seguidos de window2top(nMyHandl)), talvez isto o Maligno possa nos dizer a razão de não funcionar quando usamos apenas um window2top(nMyHandl) (vou mandar uma MP para ele ler este tópico).

A sua teoria de que o aplicativo GUI precisava de um certo tempo para abrir e depois executar o window2top(nMyHandl) talvez você esteja certo mesmo, pois eu experimentei em lugar de aApp := GetAppsInfo() que tem no seu exemplo, eu substitui por INKEY(0.1) ou até pode ser aumentado essa espera, inclusive bem propicia a exibição até determinado tempo e retornar a aplicação: e funcionou.

A outra questão de eliminar as sessões após o ESC, foi uma incrementação de boa utilização, pois foi bom você conhecer o WAPI, então.

Pena que o WAPI ainda não possua função que obtenha o modo de exibição da sessão, isto é que detecte se a sessão está em modo janelado ou fullscreen... Maligno prometeu analisar e investigar, mas parece que não é uma coisa fácil. A minha dica estava em fazer em C++ que verifique as propriedades da janela para saber se existe em modo janelado e não existe em modo fullscreen. Também em verificar em determinada posição da tela se é texto ou não. Sei lá são ideías apenas eu ainda não estou prático em C++ para fazer testes e chegar a alguma conclusão. Em outro fórum menciona alguns comandos para aplicar o ALT ENTER, não sei se funcionaria, porque primeiramente precisamos saber se está em tela cheia ou não. Os comando indicados para o fim de produzir o ALT ENTER é:

keybd_event(VK_MENU,(BYTE)0,0,0);
keybd_event(VK_ENTER,(BYTE)0,0,0);
keybd_event(VK_ENTER,(BYTE)0,KEYEVENTF_KEYUP,0);
keybd_event(VK_MENU,(BYTE)0,KEYEVENTF_KEYUP,0);
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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Utilizando o comando RUN

Mensagempor Pablo César » 13 Abr 2010 20:16

Em outro fórum menciona alguns comandos para aplicar o ALT ENTER, não sei se funcionaria, porque primeiramente precisamos saber se está em tela cheia ou não. Os comando indicados para o fim de produzir o ALT ENTER
E agora ja existe conhecido agora no fórum que reproduz as teclas e vocês podem baixar em: http://www.richpasco.org/utilities/keystuff.zip e a sintaxe é:

KEYSTUFF ALT-ENTER

Seja na linha de comando ou dentro do nosso aplicativo irá reproduzir as telcas ALT ENTER

Espero ter ajudado e desculpem ter ressucitado o post...
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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Utilizando o comando RUN

Mensagempor Pablo César » 27 Dez 2010 12:34

Pablo César escreveu:No exemplo acima, o START.EXE precisei copiar para o diretório onde se encontra a aplicação e o checar o PATH onde se encontra o WINWORD.EXE.
Achei mais uma forma de abrir o Word sem precisar informar o path onde se encontra o WinWord.exe, utilizando VBS e ao mesmo tempo abre uma sessão própria que poderá ser executada pelo comando RUN, assim:

#define  CRLF      CHR(13)+CHR(10)

memowrit("teste.vbs","set WshShell = WScript.CreateObject("+chr(34)+"Wscript.Shell"+chr(34)+")"+CRLF+"WshShell.Run("+chr(34)+"Winword.exe Meu_documento.doc"+chr(34)+")"+CRLF)
run wscript teste.vbs
E dessa forma também não há necessidade da utilização do START.EXE
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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Re: Utilizando o comando RUN

Mensagempor billy1943 » 27 Dez 2010 16:22

Uma forma bem simples de usar o RUN seria com o comando CMD, conforme segue.

Localize em qualquer pasta de sua máquina um arquivo de formato .RTF.
Nesse diretório, estando no prompt do DOS, digite somente isso:

CMD /C arquivo.rtf <enter>

O que acontece ?

O Word é aberto e o arquivo .RTF fica pronto para edição, impressão etc.

Se você usar um arquivo de formato .XLS quem abrirará será o EXCEL.
E assim, com todos os principais tipos de arquivos administrados pelo Windows.

Basta criar uma variável com o conteúdo:

crun := "cmd /c " + arquivo_a_usar // onde arquivo_a_usar é o arquivo que será impresso no programa Windows
// correspondente ao seu formato, gerado/criado pela sua aplicação
! (crun)

Simples, não é ?
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Avatar de usuário

billy1943
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 570
Data de registro: 12 Mai 2009 17:33
Cidade/Estado: Bauru-SP
Curtiu: 1 vez
Mens.Curtidas: 21 vezes

Próximo



Retornar para CA-Clipper

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro