Página 1 de 2

Problemas de foco no TEF com a LLibg

Enviado: 19 Jul 2007 18:18
por cainelli
Caros colegas,

Estou tentando implementar o TEF em meu programa de frente de caixa e estou tendo problema com o foco. Quando fecha o gerenciador padrão, a minha aplicação continua minimizada.
Tenho outro sistema já homologado, q não utiliza a Llibg, esta em clipper puro, e este problema não ocorre.

Gostaria de saber se alguem teve este problema e como solucionou ?

Obrigado,

Marcello.

Enviado: 19 Jul 2007 18:23
por sygecom
Tche, de uma procurada nos post recente que um outro colega estava com um problema parecido que se aplica para vc.....usando a Wapi.lib

Abraços
Leonardo Machado

Enviado: 19 Jul 2007 18:26
por Maligno

Enviado: 20 Jul 2007 10:23
por cainelli
Maligno,

inclui a WAPI.LIB em meu script, inclui no programa os comandos
MyHandle:=GETMYHANDLE()
.
.
.
Windows2Top(MyHandle)

compilo o programa e não dá nenhum erro, mas quando executo o programa me retorna:
C:\Prg_Clip\BSuper>R

BLX286 : 1313 : exception error 0D : general protection fault, code = B800h

Active host is DPMI (v6.00 iP6 15360 Kb)

Reg Value Limit Base Flags Segment Module File
CS 0267 02FD 02A378FC FB00 0D R C:\...CLIP\BSUPER\R.EXE
DS 029F FFFF 029A658C F300 14 R C:\...CLIP\BSUPER\R.EXE
ES 00C7 38C0 00110800 FB00 ****
SS 029F FFFF 029A658C F300 14 R C:\...CLIP\BSUPER\R.EXE

Código: Selecionar todos

 50 83 E9 06 89 0E 28 50 [IP] 8E C3 33 FF B4 FE CD 10 8C C3

[Registers]  AX=0003  BX=B800  CX=03D4  DX=0FAE   CS:IP=0267:01CA
             SI=50E2  DI=50AE  BP=E0B6  SP=E0A6
             FL=3206  NV UP EI NT PL NZ NA PE NC

[Stack value SS] 0267 017F 8010 00C7 50AE E0B6 029F 5003 E0B6 018D 0267 3246
            [SP] 0001 96BE 022F 0000 50AE 50E2 50AE 50AE E0BE 8C2A 022F 0000

[Stack frame SS] E0B6 018D 0267 3246 0001 96BE 022F 0000 50AE 50E2 50AE 50AE
            [BP] E0BE 8C2A 022F 0000 E0C8 97D9 022F 0000 0000 0000 0240 021F

C:\Prg_Clip\BSuper>[/quote]

Uso WinXP, Clip53, Blinker 6 e Llibg

Abaixo meu script para linkar:

[code]
FI R,CAIXA,ESTOQUE,FECHA,UTIL
FI AFISCAL,BEMATECH,MECAF
FI TEF
FI TIMESLIC
FI __WAIT_B
OUTPUT R.EXE
BLINKER INCREMENTAL OFF
BLINKER EXECUTABLE CLIPPER F150 
BLINKER PROCEDURE DEPTH 140 
BLINKER EXECUTABLE NODELETE 
BLINKER EXECUTABLE COMPRESS 1 
BLINKER EXECUTABLE EXTENDED 
SEARCH \BLINKER\LIB\BLXCLP53
LIB \CLIP53\LLIBG\LIB\LLIBGR
LIB \clip53\LIB\CLIPPER
LIB \clip53\LIB\EXTEND 
LIB \clip53\LIB\DBFNTX 
LIB \clip53\LIB\TERMINAL
LIB \clip53\LIB\CT53
LIB \clip53\LIB\filizop
LIB \Clip53\LIB\WAPI
Marcello

Enviado: 20 Jul 2007 10:35
por Maligno
cainelli escreveu:[Registers] AX=0003 BX=B800 CX=03D4 DX=0FAE CS:IP=0267:01CA
SI=50E2 DI=50AE BP=E0B6 SP=E0A6
FL=3206 NV UP EI NT PL NZ NA PE NC
Creio que esse erro nada tem a ver com a WAPI.LIB. Digo isso porque, pelo pedaço do erro acima, dá pra notar que a GPF foi gerada pela tentativa do programa em acessar diretamente a RAM de vídeo, coisa que a WAPI não faz. Aliás, ela sequer imprime coisa alguma.

Pra tirar a dúvida e descobrir exatamente qual função é a culpada pela GPF, faça o seguinte: acrescente no seu script de linkedição o comando map=map.txt s,a. Ele forçará o BLinker a gerar um mapa detalhado do seu EXE, que conterá os endereços de todas os objetos públicos que ele contém.
Após isso, execute seu programa da mesma maneira que deu a GPF, mas quando a GPF aparecer, não apague a tela. Apenas execute o utilitário BLIGPF, que provavelmente está no diretório BIN sob o diretório de instalação do Blinker. Ele tentará ler a tela e, lendo o mapa gerado, localizar a função causadora da GPF.

Enviado: 20 Jul 2007 10:44
por sygecom
Uso WinXP, Clip53, Blinker 6 e Llibg

Abaixo meu script para linkar:

Código:

FI R,CAIXA,ESTOQUE,FECHA,UTIL
FI AFISCAL,BEMATECH,MECAF
FI TEF
FI TIMESLIC
FI __WAIT_B
OUTPUT R.EXE
BLINKER INCREMENTAL OFF
BLINKER EXECUTABLE CLIPPER F150
BLINKER PROCEDURE DEPTH 140
BLINKER EXECUTABLE NODELETE
BLINKER EXECUTABLE COMPRESS 1
BLINKER EXECUTABLE EXTENDED
SEARCH \BLINKER\LIB\BLXCLP53
LIB \CLIP53\LLIBG\LIB\LLIBGR
LIB \clip53\LIB\CLIPPER
LIB \clip53\LIB\EXTEND
LIB \clip53\LIB\DBFNTX
LIB \clip53\LIB\TERMINAL
LIB \clip53\LIB\CT53
LIB \clip53\LIB\filizop
LIB \Clip53\LIB\WAPI
Tche, vc esta linkando a CT53.LIB e deve ser a CTP53.LIB

Abraços
Leonardo Machado

Enviado: 20 Jul 2007 10:47
por Maligno
É verdade. Me passou batido. Até pensei que o colega usava o modo protegido há tempos. Nem me ocorreu de verificar isso.
Mas isso prova que eu estava certo numa coisa: a culpa não é da WAPI. :)))

Enviado: 20 Jul 2007 11:01
por cainelli
Maligno,

Eu fiz o q vc falou. o map.txt esta lá mas qdo tento abri-lo dá :
ERROR: Not a valid Blinker 3.x-6.x .MAP file!: MAP.TXT
Tentei também salvar como MAP.MAP mas dá o mesmo erro.
ERROR: Not a valid Blinker 3.x-6.x .MAP file!: MAP.MAP

Outra coisa.

Se eu retiro as funções da WAPI do programa e compilo/linko novamente o mesmo roda normalmente.
Será q pode ser a versão do Blinker (6) ? ou alguma coisa errada no script de linkar ?

Marcello.
[/quote]

Enviado: 20 Jul 2007 11:06
por Maligno
cainelli escreveu:Eu fiz o q vc falou. o map.txt esta lá mas qdo tento abri-lo dá :
ERROR: Not a valid Blinker 3.x-6.x .MAP file!: MAP.TXT
Tentei também salvar como MAP.MAP mas dá o mesmo erro.
ERROR: Not a valid Blinker 3.x-6.x .MAP file!: MAP.MAP
Sempre usei dessa forma e nunca deu problema. Apesar de que poucas vezes precisei de um mapa.
Se eu retiro as funções da WAPI do programa e compilo/linko novamente o mesmo roda normalmente.
Será q pode ser a versão do Blinker (6) ? ou alguma coisa errada no script de linkar ?
O seu script me parece certo. Imagino que você agora está usando a CTP53 da CATools. Você pode experimentar baixar a versão 7 (última) do BLinker. Tem na área "pub" do meu site. Link na minha assinatura. Mas não deveria fazer diferença, se sua instalação do BLinker v6 não está com pau.

Enviado: 20 Jul 2007 11:08
por sygecom
cainelli escreveu:Maligno,

Eu fiz o q vc falou. o map.txt esta lá mas qdo tento abri-lo dá :
ERROR: Not a valid Blinker 3.x-6.x .MAP file!: MAP.TXT
Tentei também salvar como MAP.MAP mas dá o mesmo erro.
ERROR: Not a valid Blinker 3.x-6.x .MAP file!: MAP.MAP

Outra coisa.

Se eu retiro as funções da WAPI do programa e compilo/linko novamente o mesmo roda normalmente.
Será q pode ser a versão do Blinker (6) ? ou alguma coisa errada no script de linkar ?

Marcello.
[/quote]

Use o Blinker 7.0 e tente usar o script abaixo:

Código: Selecionar todos

Blinker Incremental Off
Blinker Cache EMS 50%,50%
Blinker Cache XMS 50%,50%
Blinker Link EMS ON
Blinker Link XMS ON
Blinker Exec Clipper //Dynf:8 //F:254
Blinker Exec Comp 1
Blinker Exec Exte
Blinker Memo Pack 60
Search \BLINKER\LIB\BlxRatex
Search \BLINKER\LIB\BLXCLP53
Blinker Incr Pad 256
Blinker Over Page On
Blinker Over Opsi 60 
OUTPUT R.EXE

FI R,CAIXA,ESTOQUE,FECHA,UTIL
FI AFISCAL,BEMATECH,MECAF
FI TEF
FI TIMESLIC
FI __WAIT_B

LIB \clip53\LIB\CLIPPER
LIB \clip53\LIB\EXTEND
LIB \clip53\LIB\DBFNTX
LIB \clip53\LIB\TERMINAL
LIB \clip53\LIB\CTP53
LIB \clip53\LIB\filizop
LIB \Clip53\LIB\WAPI
Obs: vc esta usando o BLXCLP53 , só para lembrar vc tem que usar o clipper 5.3.

Abraços
Leonardo Machado

Enviado: 20 Jul 2007 11:20
por Maligno
sygecom escreveu:Use o Blinker 7.0 e tente usar o script abaixo:
No que seu script é diferente que pode fazer diferença no caso? Não entendi. Aliás, BLXRATEX é para compatibilidade com o ExoSpace. Nada a ver com Blinker.
Obs: vc esta usando o BLXCLP53 , só para lembrar vc tem que usar o clipper 5.3.
Sim, o colega já disse que usa a versão 5.3.

Enviado: 20 Jul 2007 11:33
por cainelli
Colegas,

Estou agora com Blinker7, alterei para LIB CTP53 e estou testando com o script q o colega enviou.

Código: Selecionar todos

Blinker Incremental Off 
Blinker Cache EMS 50%,50% 
Blinker Cache XMS 50%,50% 
Blinker Link EMS ON 
Blinker Link XMS ON 
Blinker Exec Clipper //Dynf:8 //F:254 
Blinker Exec Comp 1 
Blinker Exec Exte 
Blinker Memo Pack 60 
Search \BLINKER\LIB\BlxRatex 
Search \BLINKER\LIB\BLXCLP53 
Blinker Incr Pad 256 
Blinker Over Page On 
Blinker Over Opsi 60 
OUTPUT R.EXE 

FI R,CAIXA,ESTOQUE,FECHA,UTIL 
FI AFISCAL,BEMATECH,MECAF 
FI TEF 
FI TIMESLIC 
FI __WAIT_B 

LIB \CLIP53\LLIBG\LIB\LLIBGR
LIB \clip53\LIB\CLIPPER
LIB \clip53\LIB\EXTEND 
LIB \clip53\LIB\DBFNTX 
LIB \clip53\LIB\TERMINAL 
LIB \clip53\LIB\CTP53 
LIB \clip53\LIB\filizop 
LIB \Clip53\LIB\WAPI 
Inclui a linha LIB \CLIP53\LLIBG\LIB\LLIBGR porque uso a LLIBG.
O programa agora esta compilando e abrindo normalmente.

O problema agora é outro.

Estou pegando o handle logo na abertura do sistema, só q quando executo a função Window2Top(MyHandle) o foco não volta para a aplicação e se clico em seu atalho a tela fica toda desconfigurada.

Marcello.

Enviado: 20 Jul 2007 11:38
por Maligno
cainelli escreveu:Estou pegando o handle logo na abertura do sistema, só q quando executo a função Window2Top(MyHandle) o foco não volta para a aplicação e se clico em seu atalho a tela fica toda desconfigurada.
É importante que você pegue o handle da janela do seu programa antes que ela saia de foco. Está fazendo isso?
Se sim ou não, é possível (nunca usei gráfico em DOS) que ao devolver o foco à janela do seu programa, sendo ele gráfico, que a tela fique toda desconfigura mesmo. Isso nada tem a ver com a WAPI. Ela apenas e tão somente tenta fazer o foco voltar à janela do seu programa através de um serviço da API do Windows. Nada mais.

Enviado: 20 Jul 2007 11:41
por sygecom
Estou pegando o handle logo na abertura do sistema, só q quando executo a função Window2Top(MyHandle) o foco não volta para a aplicação e se clico em seu atalho a tela fica toda desconfigurada.
Bom foi como vc mesmo disse agora o problema é outro...eu não uso a LLIBG...e não toh usando mais a WAPI.LIB , mas concerteza vai aparecer mais colegas para ajudar.....

Boa Sorte

Leonardo Machado

Enviado: 20 Jul 2007 12:01
por Maligno
sygecom escreveu:não toh usando mais a WAPI.LIB , mas concerteza vai aparecer mais colegas para ajudar.....
Pode ser que sim, pode ser que não.