Página 1 de 1

Bloqueando o teclado

Enviado: 10 Jan 2006 15:23
por foxdata
Pessoal estou homologando meu sistema no cartao de credito e preciso de uma função que bloqueie o teclado geral...alguem pode me ajudar??


Agradeço desde já

Enviado: 10 Jan 2006 16:25
por Jarbas
No site da SEVENPDV q é a empresa que faz a homologação tem um zip "desabilitar teclado" .

De uma olhada, caso vc nao encontre me mande seu e-mail que eu lhe envio .

Enviado: 12 Jun 2007 11:49
por Mário Isa
seu programa é clipper-dos ? blinker?

Enviado: 12 Jun 2007 11:52
por Dércio_Luiz_Zanatta
Se o ECF for Bematech ou Daruma, tem uma função deles que faz isso pra vc...

Enviado: 12 Jun 2007 12:17
por Mário Isa
se for clipper dos 5.2e + blinker 5 ou 7 tenho a solução

Enviado: 13 Jun 2007 00:42
por And
Mario,

Se puder poste a solução, pois ajudará a todos.

Abraços,

Enviado: 13 Jun 2007 04:53
por Pablo César
Também seria interessante você Jarbas colocar o link onde se encontra essa solução. Porque pra mim, o site da SEVENPDV, não me leva nada e o outro também relacionado a essa empresa está com o link quebrado.

Também para o vosso conhecimento, parece que o Maligno ja manifestou a intenção de fazer uma função para este propósito com o WAPI.

Enviado: 13 Jun 2007 12:36
por Mário Isa
Segue a solução:

Programa para compilar em xharbour

Obs:- dê o nome ao .prg de ashtrw.prg e assim será produzido um ashtrw.exe

Código: Selecionar todos

*************
Function Main
*************

ferase("travatec.txt")
ferase("ntravatc.txt")
ferase("finaliza.txt")
ferase("activa.txt")

while .t. 

 if file("travatec.txt") 
   ferase("travatec.txt")
   mHide()
   TravaTec(.t.) 
 end 

 if file("ntravatc.txt") 
   ferase("ntravatc.txt") 
   mShow()
   TravaTec(.f.)
 end 

 if file("finaliza.txt") 
  ferase("finaliza.txt")
  ferase("activa.txt")
  quit 
 end 

 if !file("activa.txt")
  fll := "1" 
  memowrit("activa.txt",fll) 
 end 

 inkey(0.5) // aguarda meio segundo
end

return nil


#pragma begindump
#include "windows.h"
#include "winable.h"
#include "hbapi.h"

HB_FUNC( TRAVATEC )
{
   BlockInput( hb_parl(1) );
}
#pragma enddump
// Fim do programa


// Início da função no seu programa dos+blinker
Function kbddesliga(_on_off)

fllkbd := "1"

@ 24,1
if _on_off == "T"
 if tef_produz == "S"
  memowrit("travatec.tmp",fllkbd)
  rename travatec.tmp to travatec.txt
 end
elseif _on_off == "F"
 if tef_produz == "S"
  memowrit("ntravatc.tmp",fllkbd)
  rename ntravatc.tmp to ntravatc.txt
 end
elseif _on_off == "X"
 memowrit("finaliza.tmp",fllkbd)
 rename finaliza.tmp to finaliza.txt
end
aguarda(1.5)
@ 24,1
return nil
// Final da função kbddesliga

//para chamar a função:
kbddesliga("T") para travar
kbddesliga("F") para destravar

//inicio da função aguarda
// -------->
Function aguarda(_temp)
_in := seconds()
while seconds() - _in < _temp
 var := inkey()
 if lastkey() > 0 .and. upper(chr(var)) == "Q"
  exit
 end
end
return nil
// final da função aguarda

// dentro de um .BAT você chamará o seu aplicativo assim:
echo off
cls
del activa.txt > nul
cls
pause
if not exist activa.txt cmd /c start /B ashTrw.exe > nul
cls

call seuaplicativo.exe


nota: o comando:
cmd /c start /B ashTrw.exe > nul

faz com que o seu aplicativo ashtrw.exe seja executado porém nenhum ícone será mostrado na barra de tarefas...

Abraços
Mário

Enviado: 13 Jun 2007 12:44
por sygecom
Se alguem prescissar de alguma força para compilar no xharbour me avisa que damos um jeito....

Abraços
Leonardo Machado

Enviado: 13 Jun 2007 22:21
por Mário Isa
Fiz uma alteração na função kbddesliga (aquela que vai no seu programa clipper+blinker)

Código: Selecionar todos

// Início da função no seu programa dos+blinker 
Function kbddesliga(_on_off) 

fllkbd := "1" 

@ 24,1 
if _on_off == "T" 
 memowrit("travatec.tmp",fllkbd) 
 rename travatec.tmp to travatec.txt 
elseif _on_off == "F" 
 memowrit("ntravatc.tmp",fllkbd) 
 rename ntravatc.tmp to ntravatc.txt 
elseif _on_off == "X" 
 memowrit("finaliza.tmp",fllkbd) 
 rename finaliza.tmp to finaliza.txt 
end 
aguarda(1.5) 
@ 24,1 
return nil 
// Final da função kbddesliga


Ainda uma outra coisa:
No final do seu programa clipper=dos você invoca:
kbddesliga("X")
aí a função kbddesliga grava o arquivo finaliza.txt, o astrw.exe percebe e se finaliza.

Abraços
Mário

Enviado: 14 Jun 2007 00:50
por And
Valeu!!!

Abraço,

Enviado: 14 Jun 2007 06:55
por Mário Isa
só mais 2 coisas:
1-no final eu chamei o programa de astrw.exe quando deveria ter chamado de ashtrw.exe
2-porque ashtrw.exe? Porque é um nome parecido com um dos programas que rodam junto do windows. Sabe o porque disso? Se vc colocasse o nome de trava.exe algum homologador espertinho poderia querer finalizá-lo com CTRL+ALT+DEL para ver se sua aplicação verifica isso e o re-executa.

Eu não tratei disso no meu programa.

Mas se vc quiser pode fazer o seguinte a cada momento em que vai bloquear:
1-deleta o arquivo activa.txt
2-verifica se ele existe
3-se se não existe é pq o ashtrw.exe não está ativo uma vez que ele a cada x segundos regrava o activa.txt e se não está ativo você pode reativá-lo utilizando-se do comando:
comanda := "cmd /c start /B ashTrw.exe > nul "
run (comanda)

4-se existe é pq ele está ativo, está tudo correto, pode prosseguir.

Abraços
Mário

Bloqueando o teclado

Enviado: 14 Jun 2007 17:42
por Maligno
Pablo César escreveu:o Maligno ja manifestou a intenção de fazer uma função para este propósito com o WAPI.
Não só uma intenção, mas já está planejado para o final do mês. Infelizmente, hoje em dia estou enroscado num sistema que precisou de uma grande atualização. Mas assim que terminar, volto ao WAPI, que aliás, acho bem mais divertido. :)))

Re: Bloqueando o teclado

Enviado: 08 Jun 2009 14:05
por Pablo César
Jarbas escreveu:No site da SEVENPDV q é a empresa que faz a homologação tem um zip "desabilitar teclado" .

De uma olhada, caso vc nao encontre me mande seu e-mail que eu lhe envio .
Você poderia disponibilizá-lo aqui no fórum anexando-lo ?

Re: Bloqueando o teclado

Enviado: 08 Jun 2009 14:15
por alaminojunior
Pablo César escreveu:Você poderia disponibilizá-lo aqui no fórum anexando-lo ?
Economizem o vosso tempo, pois é a função KBDDISABLE() da Catools. Devem ter colocado isso para uso no tempo do DOS.