Página 1 de 2

Arquivo TRava.exe p/ travar teclado urgente

Enviado: 21 Jan 2008 08:49
por narlem
Olá,

Alguem poderia me salvar enviando um arquivo tipo o trava.exe desenvolvido pelo Mário Isa, no xharbour para travar e destravar o teclado baseado na gravacao de umarquivo pelo meu progrma clipper, eu até vi o codigo fonte postado por ele, mas nao consigo compilar no xharbour ,

Muito Obrigado para quem puder me salvar


Narlem

Enviado: 22 Jan 2008 16:25
por Eolo
Cara, vc já deu uma olhada no CATools??
Lá tem funções pra isso...

Se vc não tiver o CAT ou precisar de ajuda, me add no MSN. Eu lhe mando.

Enviado: 22 Jan 2008 17:20
por Eolo
Dá uma olhada na função KBDDISABLE().

Se vc fizer:
KBDDISABLE(.F.) // "desliga" o teclado
* daqui pra frente o teclado tá "morto", não adianta teclar nada...
inkey(10)
KBDDISABLE(.T.) // "religa" o teclado

Enviado: 30 Jan 2008 03:10
por wagner aragao
OLA,

Se for para homologacao para TEF so a chamada desta funcao nao basta, os caras la testam inclusive o acionamento das teclas de funcoes do windows (a bandeirinha), so consegui barar isso criando um aplicativo em Delphi que monitora se existe um arquivo TXT na pasta do programa que indica que existe transacao TEF pendente, se houver ele bloqueia o teclado e mouse pela API do windows, ai sim bloqueia tudo, ao final do processo TEF apago o arquivo e libero teclado... em 2007 foi a 4 vez que homologuei meu software e nessa tive que fazer isso....
te mais.

Enviado: 30 Jan 2008 03:42
por Maligno
Estou terminando a biblioteca WAPI para uso no modo residente. O passo seguinte é adicionar um recurso de bloqueio total do teclado. Acho que até o final de semana estará resolvido.

Enviado: 30 Jan 2008 10:13
por janio
Posta o código fonte que agente compila pra vc, uai!

Jânio

Enviado: 30 Jan 2008 10:19
por Maligno
Não entendi, Janio.

Aliás, aproveitando,uma dúvida. Nunca precissei homologar TEF, felizmente. Mas eu sei, pelos comentários de outros colegas, que todas as teclas, inclusive as "for Windows", precisam ser bloqueadas. Isso também inclui, claro, os atalhos. Mas a seqüência Ctr+Alt+Del também? Se sim: e se, por algum motivo, o programa travar ou o programa abortar?

Enviado: 30 Jan 2008 10:23
por janio
A mensagem foi para o narlem, ja que ele falou que tem o codigo fonte feito pelo Mario Isa, mas não conseguiu compilar.

Jânio

Enviado: 30 Jan 2008 10:26
por Maligno
Ok. E aproveitando... Com relação à função KbdDisable() da CATools, o exemplo de uso está invertido. Na verdade, desativa-se o teclado com TRUE e reativa-se com FALSE. Ela não resolve a parada. Mas fica a informação.

Enviado: 30 Jan 2008 10:41
por janio
Narlem,

O Codigo fonte a que vc se referiu é esse???

Código: Selecionar todos

Olha pessoal! 
Eu consegui fazer o programinha tá ok ? 
Fiz em xHarbour e, caso sua aplicação seja clipper + blinker e vc, como eu, ainda não teve tempo de migrar tudo pode comandar direto de sua aplicação. 
Você grava um arquivo TRAVATEC.TXT e ele trava 
Depois vc grava um NTRAVATC.TXT e ele destrava. 
Grava um FINALIZA.TXT e ele finaliza. (se fecha) 
Ele grava, a cada 0.5 segundos um ACTIVA.TXT para mostrar que está ativo. Neste caso, toda vez que você for utilizá-lo, você deleta o ACTIVA.TXT, espera 1 segundos e pergunta se existe o ACTIVA.TXT, se existe é porque ele está ativo. se não existe é porque alguem (os homologadores, provavelmente) pararam o programinha com CTRL+ALT+DEL e neste caso, vc executa novamente a aplicação. 
Chama-se TRAVA.EXE. 
Se alguem interessar me avise aqui. 
Abraços 
Mário 

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

Estou terminando um programa em xHarbour que faz isso. 
O problema é que não consigo executá-lo de dentro do meu .EXE. 
Ele é uma aplicação 32 bits, mas quando o executo dá comando inválido. 
Faço assim: 
comanda := "TRAVA.EXE" 
run (comanda) 

Preciso conseguir executá-lo pois se alguém fechá-lo, meu programa comercial precisa reativá-lo.... 

Segue aqui o programinha. 
Se alguém puder ajudar. 

************* 
Function Main 
************* 
Para W 

/* 
TravaTec(.t.) 
MHide() 
@ 24,1 say "Travado." 
inkey(20) 
@ 24,1 
TravaTec(.f.) 
MShow() 
@ 24,1 say "destravado." 
inkey() 
quit*/ 


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 enddumpMario Isa
Se for, compilei esse codigo que vc pode pegar no link abaixo.
http://www.4shared.com/file/36395965/29 ... trava.html

Atenção! Não testei o código. Apenas compilei.

Jânio

Enviado: 30 Jan 2008 10:51
por Maligno
Eu baixei e testei aqui. No DOS travou tudo realmente. Mas as teclas e atalhos do Windows continuam funcionando. Eles não precisariam ser travados também?

BLOQUEIA TECLADO

Enviado: 30 Jan 2008 11:26
por janio
Maligno,

Tenho uma rotina em que utilizo a função em C (a mesma que o Mario utilizou) abaixo e aqui bloqueia tudo, inclusivo mouse.

Código: Selecionar todos

***********************************************************
***********************************************************
****                                                   ****
****         PROGRAMA PRA BLOQUEAR O TECLADO           ****
****         TRAVAR    ->  TravaTec(.t.)               ****
****         DESTRAVAR ->  TravaTec(.f.)               ****
****                                                   ****
***********************************************************
***********************************************************

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

HB_FUNC( TRAVATEC )
{
   BlockInput( hb_parl(1) );
}
#pragma enddump
Jânio

Enviado: 30 Jan 2008 11:30
por Maligno
Tudo bem. Mas eu testei aqui (Windows XP) e só trava tudo dentro do DOS. Fora dele o Windows continua respondendo às teclas e atalhos dele. E o cursor do mouse também funciona normalmente. Não é só executar o seu TRAVA.EXE? Foi o que fiz. Faltou eu fazer alguma coisa?

Enviado: 30 Jan 2008 11:52
por janio
Maligno,

Veja que o travamento é CONDICIONADO a existência do arquivo TRAVATEC.TXT. Vc criou esse txt e depois executou o trava.exe??

Jânio

Enviado: 30 Jan 2008 12:01
por Maligno
Criei. Aí trava tudo mesmo. Mas, depois de dar um Ctrl+Alt+Del, ao acionar o TaskManager, tudo volta ao normal: teclas e atalhos do Windows, mouse, etc. No DOS continua travado.

Agora, se der pra travar também o Ctrl+Alt+Del, fica perfeito. Seria o caso de alterar a rotina em C que você comentou.