Fechar aplicações Windows chamadas pelo Clipper

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

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,

Complementando nosso amigo Jairo Maia, ele está correto no que tange o fechamento do objeto originalizador.

Geralmente os objetos possuem um terminador para finalizá-los, sendo objeto:Close(), objeto:Exit(), objeto:Quit() e objeto:End() sendo que para finalizar um objeto InternetExplorer.Application usa-se o objeto:End().

Meu exemplo de uso desta API:

Código: Selecionar todos

*
* ----------------------------------------------------------------
*
FUNCTION OLEIExplorer(oIEWnd,cEndereco,lMDI,lPrint)
   LOCAL oIE
   Default lMDI := .t., lPrint := .f.
   Default cEndereco := "http://www.guiamais.com.br/ruas/"
   oIE:=TOleAuto():New( "InternetExplorer.Application" )
   oIE:Visible   := .T.
   oIE:ToolBar   := iif( lMDI = NIL, .f., .t. )
   oIE:StatusBar := .F.
   oIE:Top       := 055
   oIE:Left      := 001
   oIE:Height    := 600
   oIE:Width     := 800
   oIE:MenuBar   := .F.
   oIE:Navigate( cEndereco )
   // Se lPrint = .t. é forçada a impressão do conteúdo
   if lPrint
      oIE:ExecWB(6,0,0,0) // Imprimir
   endif
   // Exemplo de salvamento do conteúdo 
   //oIE:Document.execCommand("saveas")
   oIE:End()
   if lMDI
      DEFINE WINDOW oIEWnd MDI
      ACTIVATE WINDOW oIEWnd ON INIT FindIE(oIEWnd) MAXIMIZED
   else
      DEFINE WINDOW oIEWnd TITLE cEndereco MDICHILD STYLE nOr(WS_CHILD,DS_SYSMODAL,DS_MODALFRAME) 
      ACTIVATE WINDOW oIEWnd ON INIT FindIE(oIEWnd) MAXIMIZED
   endif
   SysRefresh()
   RETURN

Function FindIE(oWIn)
   local lCaptured, hIE
   hIE := FindWindow("IEFrame")
   lCaptured := ( hIE > 0 )
   IF lCaptured
      SetParent(hIE, oWin:hWnd)
      SysRefresh()
   ELSE
      MsgStop('IE nao capturado. ative-o')
   ENDIF 
   return nil
A função FindIE() captura e embute na Window de sua aplicação. As funções SysRefresh() e MsgStop() são específicas do Fivewin.
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
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á Billy,

Bom que resolveu, e vou dar outra opinião sobre você perder a acentuação:

Na minha opinião, está faltando no programa xHarbour você setar o ambiente em português. Algo como:

Código: Selecionar todos

#include "inkey.ch"

REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
	 
***************
FUNCTION main(rua, cidade, uf)
***************

HB_LANGSELECT('PT')
HB_SETCODEPAGE('PT850')

// restante da função
Tente assim e veja se vai funcionar. Pode ser que seja isso...

E caso ainda não funcione, tente depois da chamada ao programa em xHarbour reconfigurar o ambiente no Clipper colocando apenas:

Código: Selecionar todos

HB_LANGSELECT('PT')
HB_SETCODEPAGE('PT850')
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 Maia,

Realmente, as aplicações em Windows estão mudando a página de 850(Brasil-PT), que é a inicial, para a página 437, que é dos USA.

Apesar de eu ter incluído as linhas no fonte da aplicação em XHarbour, em algum lugar quando fecho não só essas aplicações geradas pelo XHarbour, como se eu usar
qualquer aplicação do Windows (Word, NodosImp, etc.), no retorno ao DOS, a página já está mudada.


Assim vou ter de incluir no meu sistema em Clipper o seguinte comando, que espero, acabe com o problema de "bagunçar" toda a acentuação de tela:
"mode con codepage select=850"

Ao menos, achamos a causa.

Novamente, obrigado.
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