Fechar aplicações Windows chamadas pelo Clipper

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Fechar aplicações Windows chamadas pelo Clipper

Mensagem por billy1943 »

Como eu uso aplicações criadas pelo XHarbour de dentro do Clipper, por exemplo, acesso à Internet via Internet Explorer, esses processos "parecem" continuar em aberto na memória,
tanto que na primeira vez de uso funciona de acordo mas a partir de outras chamadas, começam a dar as tradicionais mensagens que "O Internet Explorer parou de funcionar", etc.

No Clipper, minha aplicação continua normalmente após fechar a rotina em Windows.
Coloquei nele uma rotina (Process_Win32_Kill) sugerida na página do XHarbour mas pelo jeito não deu certo.
O tópico de onde a tirei é o seguinte:

https://pctoledo.org/forum/viewto ... ill#p55576

O Internet Explorer fica prejudicado em alguma coisa.

O que eu posso fazer no XHarbour ?

Como não sou versado em XHarbour não conheço as funções que poderiam descarregar a rotina da memória, mas deve ter alguma, presumo.
Para melhor análise de entendidos no Xharbour, coloco abaixo uma das rotinas utilizadas, obtidas nos exemplos do XHarbour.
Ela procura pelo IE (gostaria que fosse pelo Chrome direto) a localização de um endereço, obtido do cadastro de clientes em uso.

Código: Selecionar todos

#include "inkey.ch"

***************
FUNCTION main(rua, cidade, uf)
***************

local oMapa, mde_uf, mpara_uf, mde_cid, mpara_cid, mde_rua, mpara_rua, mweb
setmode(25,80)
setcolor('w+/b,g+/n,,,bg+/b' )
set cursor on
cls

do while .t.

   if pcount() == 0
      mpara_uf  := space(2)
      mpara_cid := space(40)
      mpara_rua := space(50)
   else
      mpara_uf  := "SP" // uf
      mpara_cid := cidade
      mpara_rua := rua
   endif

   @ 11, 01 say "PROCURAR :"
   @ 13, 01 say "Estado ..:" get mpara_uf  picture "@!"
   @ 14, 01 say "Cidade ..:" get mpara_cid picture "@!"
   @ 15, 01 say "Endere‡o :" get mpara_rua picture "@!"
   read

   if lastkey() == K_ESC
      exit
   endif

   mpara_uf  := alltrim( mpara_uf )
   mpara_cid := alltrim( mpara_cid )
   mpara_rua := alltrim( mpara_rua )
   msearch := mpara_rua + " " + mpara_cid + " " + mpara_uf
   try
   oMapa := GetActiveObject( "InternetExplorer.Application" )
   catch
   try
   oMapa := CreateObject( "InternetExplorer.Application" )
   catch
   Alert( "ERRO ! Internet Explorer nÆo dispon¡vel")
   return
   end
   end
   mweb := "http://google.com.br/search?q=" + msearch + "&oq=" + ;
            msearch + "&aqs=chrome" 

   oMapa:Visible := .t.
   oMapa:Navigate( mweb )
   exit

enddo

setmode(25,80)
set cursor off
return
Outra coisa:
Quando a aplicação retorna ao DOS/Clipper, toda os acentos gráficos e cedilhas da tela, foram para o espaço.
Tem como evitar isto, informando que eu uso o Windows 7 Ultimate ?
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Fechar aplicações Windows chamadas pelo Clipper

Mensagem por Kapiaba »

Ola, teste assim, e diga o que acontece... abs.

Código: Selecionar todos

#include "inkey.ch"

FUNCTION main(rua, cidade, uf)

   local oMapa, mde_uf, mpara_uf, mde_cid, mpara_cid, mde_rua, mpara_rua, mweb

   setmode(25,80)
   setcolor('w+/b,g+/n,,,bg+/b' )
   set cursor on

   cls

   HB_GCALL( .F. )  // Limpa o Lixo da  Memoria, se Existir.

   if pcount() == 0
      mpara_uf := space(2)
      mpara_cid := space(40)
      mpara_rua := space(50)
   else
      mpara_uf := "SP" // uf
      mpara_cid := "SAO PAULO" //cidade
      mpara_rua := "RUA ROCHA" //rua
   endif

   @ 11, 01 say "PROCURAR :"
   @ 13, 01 say "Estado ..:" get mpara_uf picture "@!"
   @ 14, 01 say "Cidade ..:" get mpara_cid picture "@!"
   @ 15, 01 say "Endere‡o :" get mpara_rua picture "@!"
   read

   if lastkey() == K_ESC
      return nil
   endif

   mpara_uf := alltrim( mpara_uf )
   mpara_cid := alltrim( mpara_cid )
   mpara_rua := alltrim( mpara_rua )
   msearch := mpara_rua + " " + mpara_cid + " " + mpara_uf

   try
        oMapa := GetActiveObject( "InternetExplorer.Application" )
     catch
        try
           oMapa := CreateObject( "InternetExplorer.Application" )
        catch
           Alert( "ERRO ! Internet Explorer nÆo dispon¡vel")
        return
      end
   end

   mweb := "http://google.com.br/search?q=" + msearch + "&oq=" + ;
      msearch + "&aqs=chrome"

   oMapa:Visible := .t.
   oMapa:Navigate( mweb )

   setmode(25,80)
   set cursor off

return Nil
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Fechar aplicações Windows chamadas pelo Clipper

Mensagem por billy1943 »

Olá Kapiaba,


Inclui a linha destinada a tirar o lixo da memória mas o problema persiste, inclusive porque como eu não havia desligado o computador, no gerenciador de tarefa existiam vários
processos que eu não sei o que fazem e que podem estar dando conflito com o Internet Explorer, que, reafirmo não é o meu navegador padrão.

Várias vezes em outras oportunidades o IE deixa de funcionar sem explicação alguma, e, por isso é que uso o Chrome, pois se der algum problema ele consegue restaurar.

Pergunto eu, não abusando do amigo:

Não tem como trocar o IE pelo Chrome para ter acesso à Internet nas rotinas desenvolvidas pelo XHarbour ?


Abraços e obrigado pela dica.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Fechar aplicações Windows chamadas pelo Clipper

Mensagem por Kapiaba »

Olá, tem alguma coisa errada ai.. Testei aqui, mesmo em FIVEWIN, funciona de boa.

Estou inclusive criando uma função em FIVEWIN igualzinha a sua e tá ficando show(), e usando ACTIVEX, eu disparo direto para o Google Chrome, não sei como usar ACTIVEX em xHarbour no modo console. Lamento.

Não deveria ter nenhum efeito no seu IE, mesmo porque o programa somente o chamou e nem Looping tem.

abs.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Fechar aplicações Windows chamadas pelo Clipper

Mensagem por Kapiaba »

Billy, aqui tem um exemplo em FiveWin, baseado na sua idéia.

Se quiser ver funcionando em Modo Windows, avise-me.

http://fivewin.com.br/index.php?/topic/ ... a-activex/

Obg. abs.
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Fechar aplicações Windows chamadas pelo Clipper

Mensagem por billy1943 »

Olá Kapiaba,

Vi no fórum do FiveWin o exemplo baseado na minha sugestão, somente como eu ainda não tenho nada de FiveWin, pediria a você um favor de:

1. compilar o exemplo enviado no início deste tópico, onde eu mando os 3 parâmetros (endereço, cidade e estado), visto que não quero digitá-los, no formato do FiveWin, para que funcione
com o Chrome;

2. disponibilizar, neste tópico, o executável gerado (mande-o arjeado ou renomeado para .TXT, senão não passa)


Aí sim poderei testá-lo conjuntamente com o meu sistema, e, se der certo como julgo que dê, vou procurar ter uma instalação mesmo que para iniciante do FiveWin, para compilar esta e
outras aplicações, com mais vagar.

P.S. fica o meu agradecimento pelos colegas programadores que participaram do fórum do FiveWin, por citarem este Clippeiro como autor da sugestão, mas o que fiz foi simplesmente agregar
mais uma facilidade ao que já havia sido criado.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Fechar aplicações Windows chamadas pelo Clipper

Mensagem por Kapiaba »

Vou deixar um pedido para o amigo Rochinha compilar e disponibilizar para você, é mais fácil, eu ainda não sei usar muito bem este forum.

Obg. abs.
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Fechar aplicações Windows chamadas pelo Clipper

Mensagem por billy1943 »

OI, Kapiaba

É muito simples você nos disponibilizar o arquivo que solicitei ou qualquer outro arquivo:

1. Faça uma cópia do seu executável, por exemplo, MAPA_GOOGLE.EXE, para, por exemplo, MAPA.TXT
2. Toda vez que você está criando um novo tópico, aparece em baixo do corpo da resposta, duas abas (Opções e Anexar Arquivo)
3. Escolha "Anexar arquivo"
4. Localize a pasta onde está o arquivo, anexe-o e envie-o para o Fórum
5. O arquivo vai aparecem abaixo do texto do tópico criado onde os usuários poderão baixá-lo facilmente
6. Por regra, alguns tipos de arquivo não são aceitos (.EXE, .COM,.BMP, etc) motivo pelo qual sugiro mandá-lo como .TXT
7. Uma vez baixado, basta renomeá-lo para .EXE que ele funciona.
8. Se quiser pedir para o Rochinha, tenho também certeza de que ele nos atenderá.

Abraços
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Fechar aplicações Windows chamadas pelo Clipper

Mensagem por Kapiaba »

Ok. Obg. Tentando anexar o arquivo Google.zip completo para ser baixado por todos.

abs.
Anexos
GOOGLE.ZIP
Pegar a Rua via google Maps
(1.02 MiB) Baixado 199 vezes
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Fechar aplicações Windows chamadas pelo Clipper

Mensagem por billy1943 »

Oi, Kapiaba

Baixei e agradeço pela atenção.

Vou tentar colocar o Fivewin em funcionamento tão logo encontre uma versão mais atualizada de que tenho (a minha deve ser de 2005).

O programa funcionou certinho.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Fechar aplicações Windows chamadas pelo Clipper

Mensagem por Kapiaba »

Billy, FiveWin é pago, você pode comprá-lo na VIRTUAL OBJECTS INFORMÁTICA, representante oficial do FiveWin no Brasil. A última versão, está simplesmente maravilhosa.

Email:

gilmer@fivewin.com.br

http://fivewin.com.br/

A/C.: Sr. Gilmer Tavares.

Quando quiser aprender, estamos à disposição, aqui e no forum fivewin brasil.

abs.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Fechar aplicações Windows chamadas pelo Clipper

Mensagem por rochinha »

Amiguinhos,
Vou deixar um pedido para o amigo Rochinha compilar e disponibilizar para você, é mais fácil, eu ainda não sei usar muito bem este forum.
O que posso fazer? o que devo compilar.

Billy1943

modifique o comando padrão de saida forçada, QUIT. Coloque no inicio de seu .PRG:

Código: Selecionar todos

...
      #command QUIT => ( PostQuitMessage( 0 ), __Quit() )
...
function main(...
E no final coloque:

Código: Selecionar todos

...
	   oMapa:Visible := .t.
	   oMapa:Navigate( mweb )
	 
	   setmode(25,80)
	   set cursor off

        QUIT // forçar o fechamento do aplicativo
	 
	return Nil
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Fechar aplicações Windows chamadas pelo Clipper

Mensagem por billy1943 »

Oi, Rochinha

A função PostQuitMessage utilizada como abaixo, está dando erro.

Código: Selecionar todos

 #command QUIT => ( PostQuitMessage( 0 ), __Quit() )
Ela faz parte da XHarbour, onde estou compilando o exemplo ?

O QUIT normal está funcionando ou ao menos não apresenta erro algum.
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 do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Fechar aplicações Windows chamadas pelo Clipper

Mensagem por Jairo Maia »

Olá Pessoal,

Apenas um palpite: Com base no primeiro exemplo postado pelo Billy neste tópico, antes do comando EXIT, ele não tem que matar o processo aberto?

Ao invés de:

Código: Selecionar todos

oMapa:Visible := .t.
oMapa:Navigate( mweb )
exit
Não deveria ser assim?:

Código: Selecionar todos

oMapa:Visible := .t.
oMapa:Navigate( mweb )
oMapa:Quit()  // aqui matar o processo?
exit
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Fechar aplicações Windows chamadas pelo Clipper

Mensagem por billy1943 »

Olá Jairo

Da forma como você apresentou não dá nem tempo de ver nada do que o IE apresenta e já fecha a janela.
Pode ser que o erro que estava dando no IE fosse por algum "malware", mas está funcionando bem.
Para evitar que a(s) janelas do IE pudessem se acumular e possivelmente travá-lo, coloquei um alerta no programa que o chama e após coloquei o comando oMapa:Quit()
O final da rotina foi modificado e está assim agora:

Código: Selecionar todos

   oMapa:Visible := .t.
   oMapa:Navigate( mweb )
   exit

enddo

Alert("Como a janela do IE ficou, será fechada agora.")
oMapa:Quit() 
setmode(25,80)
set cursor off
return
Muito Obrigado.

Abraços
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Responder