Fórum Travar o teclado - TEF #182999
19/09/2003
0
Estou em fase de homologação do TEF e preciso travar o teclado enquanto a impressora imprime e destravá-lo assim que ela parar de responder. Peguei este código aqui no clube:
No OnCreate Do form principal: Application.OnMessage:=TravaTecla;
Procedure TForm1.TravaTecla(var msg:TMsg;var Handled:boolean);
msg.wParam:=0;
Realmente ele trava, mas como fazer para Destravar ? Se possível, enviem o código dentro de uma procedure
Grato pela atenção.
Turbo Drive
Curtir tópico
+ 0Posts
19/09/2003
Nigro
Gostei + 0
19/09/2003
Turbo Drive
Grato pela atenção.
Gostei + 0
19/09/2003
E_gama
Segue exemplo...
procedure BlockInput(ABlockInput : boolean); stdcall; external ´USER32.DLL´; implementation ... BlockInput(True); //--> Bloqueia ... BlockInput(False); //--> Desbloqueia
Gostei + 0
19/09/2003
Turbo Drive
É por isso que ainda gostaria de saber como destravar com aquela função que postei anteriormente.
Mesmo assim obrigado.
Gostei + 0
20/09/2003
Kroki
Gostei + 0
01/10/2003
Aroldo Zanela
A API BlockInput bloqueia o teclado e mouse geral, mas desbloqueia imediatamente aos pressionar Ctrl + Alt + Del. Idem para as rotinas em assembly do colega Kroki.
De acordo com o manual de certificação Interface Padrão/TEF-VISANET Versão 5.1 - Julho/2003, basta atribuir false para a propriedade enable do form no início da impressão e true ao final.
Gostei + 0
03/10/2003
Turbo Drive
O esquema de desativar o form pode ser falho, pois assim que o GP das operadoras termina o serviço nós temos que recuperar o foco do cursor, o que é inclusive um dos testes.
O que as operadoras querem é que limpemos o Buffer do teclado enquanto a impressora está em execução. Vc teria alguma idéia de como fazer isso ?
Gostei + 0
03/10/2003
Aroldo Zanela
O esquema de desativar o form pode ser falho, pois assim que o GP das operadoras termina o serviço nós temos que recuperar o foco do cursor, o que é inclusive um dos testes.
[/quote:f750d3459f]
A recomendação anterior é da própria VISANET. Quanto ao retorno do Foco, vc pode utilizar o SetForegroundWindow(Form.Handle);.
Para limpar o buffer:
var Msg: TMsg; begin while PeekMessage( Msg, 0, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE or PM_NOYIELD ) do;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)