Travar o teclado - TEF
Bom dia a todos.
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.
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
Curtidas 0
Respostas
Nigro
19/09/2003
Pode parecer muito óbvil, nunca tentei isso mas será que com parâmetro 1 daria certo?
GOSTEI 0
Turbo Drive
19/09/2003
Eu já tentei colocar ´msg.wParam := 1´ e não deu certo. Alguém tem alguma sugestão ou outra forma de travar o teclado que não seja no evento onkeydown ou onkeypress ?
Grato pela atenção.
Grato pela atenção.
GOSTEI 0
E_gama
19/09/2003
Tem uma função em User32.DLL que faz isso. O problema é que bloquea o mouse também...
Segue exemplo...
Segue exemplo...
procedure BlockInput(ABlockInput : boolean); stdcall; external ´USER32.DLL´; implementation ... BlockInput(True); //--> Bloqueia ... BlockInput(False); //--> Desbloqueia
GOSTEI 0
Turbo Drive
19/09/2003
Muito massa mermo, a função do BlockInput. Valeu pela dica. O meu único receio é se todo windows vem com esta dll e se vier, esta função tb estará sempre presente ?
É por isso que ainda gostaria de saber como destravar com aquela função que postei anteriormente.
Mesmo assim obrigado.
É por isso que ainda gostaria de saber como destravar com aquela função que postei anteriormente.
Mesmo assim obrigado.
GOSTEI 0
Kroki
19/09/2003
Gostei tambem do Blockinput,mas não consegui destravar o teclado em rede...
GOSTEI 0
Aroldo Zanela
19/09/2003
Colegas,
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.
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
Turbo Drive
19/09/2003
Caro Aroldo,
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 ?
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
Aroldo Zanela
19/09/2003
[quote:f750d3459f=´Turbo Drive´]Caro Aroldo,
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:
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);.
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 ?
Para limpar o buffer:
var Msg: TMsg; begin while PeekMessage( Msg, 0, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE or PM_NOYIELD ) do;
GOSTEI 0