programa em xHarbour chamado via Agendador de Tarefas

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

programa em xHarbour chamado via Agendador de Tarefas

Mensagem por cjp »

Meu caro, me desculpe, mas vou ter que incomodá-lo de novo com isso. Esta função às vezes funciona, às vezes não. Não sei explicar por quê. Fiz dezenas de teste. Só consegui determinar que, na maioria das vezes que eu chamo o bat do Agendador de Tarefas, ele não funciona. Quando eu executo diretamente via prompt do Dos, às vezes funciona, às vezes não. Não consigo entender por que.

O bat está redigido assim:

Código: Selecionar todos

@echo off >nul
wapi -getmyhandle:myhand.txt
txwapi.exe
e-mail.exe
O programa txwapi está redigido assim:

Código: Selecionar todos

function main()
             han := {}
             aadd(han,{"numero", "C", 20, 0})
             dbcreate("hand",han)
             use hand
             append from myhand.txt sdf
             go 1
             Cnrhand=alltrim(numero)
             !wapi -setbuttonx:off;Cnrhand
return
Será que tem algo errado?
Editado pela última vez por anacatacombs em 08 Nov 2011 08:26, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Inacio de Carvalho Neto
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á

Programa em xHarbour chamado via Agendador de Tarefas

Mensagem por Pablo César »

Realmente da forma que foi feita não funcionava. Acredito que deve ser por duas razões:

1. No seu exemplo, ao executar o wapi -getmyhandle:myhand.txt (sem o path) deve estar criando o arquivo em alguma área restrita do Windows, isto porque o agendador de tarefas não está na pasta corrente. Então veja como que fiz no arquivo bat:

Código: Selecionar todos

@echo off
wapi -getmyhandle:C:\NOME_DA_PASTA_DO_PROGRAMA\myhand.txt
Observe que removí >nul que estava ao lado do echo off (não tem necessidade isso). Também observe que foi colocado o caminho completo onde está a aplicação.

2. No seu código, ao executar o !wapi -setbuttonx:off;Cnrhand na verdade o myhand não estaria sendo substituído pelo seu valor, isto porque está sendo executado na linha de comando. Então veja como que fiz no prg:

Código: Selecionar todos

Cnrhand=ALLTRIM(MEMOREAD("C:\NOME_DA_PASTA_DO_PROGRAMA\MYHAND.TXT"))
Roda:="WAPI -SETBUTTONX:off;"+Cnrhand
RUN (Roda)
Observe que o roda fica constituído por strings já concatenando a variável Cnrhand. Também observe que foi colocado o caminho completo onde está a aplicação e a criação do dbf não foi necessária, isso pode evitar maiores problemas, ao final de contas o txwapi.exe é para ler o arquivo MYHAND.TXT e não criar nada.

Aqui funcionou perfeitamente. Veja se resolveu.
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 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á

programa em xHarbour chamado via Agendador de Tarefas

Mensagem por Pablo César »

Ahh lembrei de perguntar:

Esse e-mail.exe, ele não abre outra janela, não é ? Este aplicativo é em modo console e não abre uma nova janela ?

Porque se abrir uma nova janela, você precisaria saber o novo handle dessa nova janela, no caso. Daí teríamos que fazer algo direto no e-mail.exe. Ok ?
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.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

programa em xHarbour chamado via Agendador de Tarefas

Mensagem por cjp »

Meu caro, vc tinha toda razão; estava errado o repasse da variável para o wapi mesmo.
Fiz todas as correções que vc mandou. Agora a situação está assim: sempre funciona se eu rodo direto do prompt do Dos, mas nunca funciona se rodado do Agendador de Tarefas do Windows.
O e-mail não está abrindo nova janela não. É um programinha bem simples, que apenas verifica se outro programa está rodando, registrando isso numa base de dados.
Será que ainda tem algo errado na minha função?
Agradeço sua ajuda.
Inacio de Carvalho Neto
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á

programa em xHarbour chamado via Agendador de Tarefas

Mensagem por Pablo César »

sempre funciona se eu rodo direto do prompt do Dos, mas nunca funciona se rodado do Agendador de Tarefas do Windows
Deve ser porque não encontra o WAPI. Lembre o agendador de tarefas não é executado na mesma pasta que o programa está. Então alterei a linha onde compõe o Roda, coloquei o caminho onde se encontra o WAPI.EXE.

Cnrhand=ALLTRIM(MEMOREAD("C:\NOME_DA_PASTA_DO_PROGRAMA\MYHAND.TXT"))
Roda:="C:\NOME_DA_PASTA_DO_PROGRAMA\WAPI -SETBUTTONX:off;"+Cnrhand
RUN (Roda)

Adicione o caminho e me diga se funciona.
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.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

programa em xHarbour chamado via Agendador de Tarefas

Mensagem por cjp »

Mas colocando no bat inicialmente CD\MINHAPASTA, não deveria resolver?

De qualquer forma, fiz como vc disse, mas ainda não funcionou.
Inacio de Carvalho Neto
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á

programa em xHarbour chamado via Agendador de Tarefas

Mensagem por Pablo César »

Mas colocando no bat inicialmente CD\MINHAPASTA, não deveria resolver?
Pois é... deveria resolver... mas... não sei porque cargas d'águas isso não funciona. Então decidí fazer os testes e percebí que mesmo mudando o agendador de tarefas para que execute um arquivo batch este é executado com um tal de C:\WINDOWS\System32\svchost.exe então decidí colocar os arquivos lá... mas também não adiantou.

Daí utilizei outra opção do WAPI.EXE que lista todos os programa em execução com seu devidos handles e capturei o numero do handle que dizia: C:\WINDOWS\System32\svchost.exe e uola !

Então amigo, você pode incluir esta rotina no seu aplicativo e-mail.exe diretamente:

Código: Selecionar todos

#define _kEOL        Chr(13)+Chr(10)

RUN ("WAPI -GETAPPSINFO:C:\WINDOWS\SYSTEM32\APPS.TXT")
ctEXTO:=ALLTRIM(MEMOREAD("C:\WINDOWS\SYSTEM32\APPS.TXT"))
while (i := At(_kEOL,cTexto)) > 0
      cLine := Left(cTexto,i-1)
      cTexto := SubStr(cTexto,i+2)
      i := At(",",cLine)
      IF "C:\WINDOWS\System32\svchost.exe" $ SubStr(cLine,i+1)
         Cnrhand:=Left(cLine,i-1)
      ENDIF
enddo
RUN ("WAPI -SETBUTTONX:off;"+Cnrhand)
/*
De aqui em mais segue o seu programa e-mail normalmente
*/
Só que certifique-se que o seu Windows e o svchost.exe esteja como o meu, o que estaria com a instalação normal de um XP. Acho que agora vai dar certo, pois comigo aqui deu certo sim !

Sóque não me pergunte por quê não funcionou com as indicações anteriores: pois não sei responder direito.
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.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

programa em xHarbour chamado via Agendador de Tarefas

Mensagem por cjp »

Funcionou, meu caro.
Muito obrigado.
Inacio de Carvalho Neto
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á

programa em xHarbour chamado via Agendador de Tarefas

Mensagem por Pablo César »

cjp escreveu:Será que vc me ajudaria a resolver outro problema semelhante
Você ja tinha postado a mesma pergunta o que também caracterizou desvio de assunto. Veja aqui como novo tópico seu: https://pctoledo.org/forum/viewto ... 205#p72205
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