Alternativa a BlockInput
Moderador: Moderadores
- André Corrêa
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 03 Nov 2015 07:46
- Localização: Caraguatatuba/SP
Alternativa a BlockInput
Bom dia,
Alguém tem alguma alternativa para efetuar o bloqueio total do teclado sem utilizar a função BlockInput da API do Windows?
Explico: Utilizávamos o TRAVATEC em nosso sistema, o qual se baseia nessa função, porém, após o Windows XP, ela só funciona
se executar o aplicativo com privilégios de administrador, ou com a UAC desativada.
Infelizmente nosso sistema não pode ser executado como administrador e não podemos desativar a UAC.
Tenho tentado criar uma função em C, que detecte o pressionamento de qualquer tecla (utilizando GetAsyncKeyboardState) e o
troque por nulo, ou algo do tipo, mas não obtive resultado.
Pesquisei bastante no fórum e no Google, mas apesar de ser um problema antigo, parece que ainda não existe solução.
Se alguém tiver alguma alternativa, gostaria de saber.
Obrigado,
Alguém tem alguma alternativa para efetuar o bloqueio total do teclado sem utilizar a função BlockInput da API do Windows?
Explico: Utilizávamos o TRAVATEC em nosso sistema, o qual se baseia nessa função, porém, após o Windows XP, ela só funciona
se executar o aplicativo com privilégios de administrador, ou com a UAC desativada.
Infelizmente nosso sistema não pode ser executado como administrador e não podemos desativar a UAC.
Tenho tentado criar uma função em C, que detecte o pressionamento de qualquer tecla (utilizando GetAsyncKeyboardState) e o
troque por nulo, ou algo do tipo, mas não obtive resultado.
Pesquisei bastante no fórum e no Google, mas apesar de ser um problema antigo, parece que ainda não existe solução.
Se alguém tiver alguma alternativa, gostaria de saber.
Obrigado,
-- André Corrêa
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Alternativa a BlockInput
Olá André,
A idéia é bloquear somente o teclado, permitindo acesso ao sistema via mouse por exemplo? Ou seria algo como bloquear o acesso a tudo, teclado e sistema e periféricos.
Em meus sistemas de frente de caixa, se por alguma razão o atendente precisar se afastar do caixa (ir ao banheiro por exemplo), ele pressiona a tecla F6. O sistema aciona uma função solicitando a senha do atendente que está operando, e só libera se for digitado essa senha, ou a máquina for reiniciada com outra senha. Mas não sei se isso serve no seu caso.
A idéia é bloquear somente o teclado, permitindo acesso ao sistema via mouse por exemplo? Ou seria algo como bloquear o acesso a tudo, teclado e sistema e periféricos.
Em meus sistemas de frente de caixa, se por alguma razão o atendente precisar se afastar do caixa (ir ao banheiro por exemplo), ele pressiona a tecla F6. O sistema aciona uma função solicitando a senha do atendente que está operando, e só libera se for digitado essa senha, ou a máquina for reiniciada com outra senha. Mas não sei se isso serve no seu caso.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
- André Corrêa
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 03 Nov 2015 07:46
- Localização: Caraguatatuba/SP
Alternativa a BlockInput
Boa tarde Jairo,
Obrigado pelo retorno.
Na verdade, preciso de algo que funcione exatamente como a função BlockInput da API do Windows, mas
que não precise ser executada com privilégios de administrador, ou desativar a UAC.
Obrigado pelo retorno.
Na verdade, preciso de algo que funcione exatamente como a função BlockInput da API do Windows, mas
que não precise ser executada com privilégios de administrador, ou desativar a UAC.
-- André Corrêa
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Alternativa a BlockInput
Olá André,
E se você usasse um laço para bloquear tudo. Por exemplo:
E se você usasse um laço para bloquear tudo. Por exemplo:
Código: Selecionar todos
Function Main()
Local cOpcao := Space( 1 )
Clear Screen
While .t.
@ 12, 35 Say "Bloquear teclado" Get cOpcao Picture "@!" Valid cOpcao $ "SN"
Read
If cOpcao = "S"
BlockActions()
EndIf
EndDo
Return Nil
Function BlockActions()
Clear Screen
@ 12, 2 Say "Teclado e mouse travados. Pressione CTRL+BREAK ou clique no X para sair..."
While .t.
Inkey( 0 )
EndDo
Return NilAbraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Alternativa a BlockInput
Afinal quer bloquear o que?
O teclado no seu aplicativo, ou o Windows inteiro?
Não entendi direito o que quer, ou pra que vai servir isso.
É um novo GPBPlugin? rs
O teclado no seu aplicativo, ou o Windows inteiro?
Não entendi direito o que quer, ou pra que vai servir isso.
É um novo GPBPlugin? rs
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- André Corrêa
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 03 Nov 2015 07:46
- Localização: Caraguatatuba/SP
Alternativa a BlockInput
José, usávamos a função BlockInput da API do Windows para bloquear qualquer ação via teclado ou mouse.
Essa função era necessária para homologar o TEF, já que desabilitar qualquer tipo de entrada durante a comunicação
era um pré-requisito.
Atualmente para que essa API funcione, o aplicativo tem que ser executado como adm, ou a UAC do Windows deve ser
desativada. Infelizmente não podemos recorrer a nenhum dos 2 casos.
Estou estudando há alguns dias as APIS GetKeyState, GetKeyboardState, GetASyncKeyState e GetASyncKeyboardState
juntamente com Hook de teclado para anular qualquer tecla pressionada, mas ainda não consegui desenvolver nada
satisfatório.
Essa função era necessária para homologar o TEF, já que desabilitar qualquer tipo de entrada durante a comunicação
era um pré-requisito.
Atualmente para que essa API funcione, o aplicativo tem que ser executado como adm, ou a UAC do Windows deve ser
desativada. Infelizmente não podemos recorrer a nenhum dos 2 casos.
Estou estudando há alguns dias as APIS GetKeyState, GetKeyboardState, GetASyncKeyState e GetASyncKeyboardState
juntamente com Hook de teclado para anular qualquer tecla pressionada, mas ainda não consegui desenvolver nada
satisfatório.
-- André Corrêa
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
Alternativa a BlockInput
nem uma reposta no google foi satisfatória, somente como adm.
Código: Selecionar todos
#include <windows.h>
#include <winable.h>
#include <time.h>
int main() {
BlockInput(true);
while (clock() < 5000) {}
BlockInput(false);
}
Código: Selecionar todos
#include <iostream>
#include <windows.h>
#include <winable.h>
int main() {
BlockInput(true);
Sleep(10000);
return 0;
}
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Alternativa a BlockInput
Imaginando que seja pra travar o computador no aplicativo....
Só manter o foco no aplicativo.
Só manter o foco no aplicativo.
Código: Selecionar todos
DO WHILE .T.
hWnd:SetFocus()
Inkey(0.1)
ENDDO
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- André Corrêa
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 03 Nov 2015 07:46
- Localização: Caraguatatuba/SP
Alternativa a BlockInput
Obrigado pelas respostas, mas o problema segue sem solução.
A intenção não é travar o foco no aplicativo, mas bloquear qualquer
entrada via teclado e mouse.
Vou continuar analisando as APIs disponíveis e caso encontre alguma
alternativa interessante, compartilharei aqui.
A intenção não é travar o foco no aplicativo, mas bloquear qualquer
entrada via teclado e mouse.
Vou continuar analisando as APIs disponíveis e caso encontre alguma
alternativa interessante, compartilharei aqui.
-- André Corrêa
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Alternativa a BlockInput
Olá André,
Bom, talvez você já tenha visto, mas mesmo assim vai aqui esse link: BlockInput function. Tem exemplo em C++, C# e veb.net.
Ok. Agora ficou claro.André Corrêa escreveu:A intenção não é travar o foco no aplicativo, mas bloquear qualquer entrada via teclado e mouse.
Bom, talvez você já tenha visto, mas mesmo assim vai aqui esse link: BlockInput function. Tem exemplo em C++, C# e veb.net.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
- André Corrêa
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 03 Nov 2015 07:46
- Localização: Caraguatatuba/SP
Alternativa a BlockInput
Obrigado Jairo,
Era o que usávamos, mas houveram essas mudanças que citei.
Era o que usávamos, mas houveram essas mudanças que citei.
-- André Corrêa
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Alternativa a BlockInput
Qual o problema na que mencionei?
Abra uma janela que cubra todo desktop e prenda o foco nela.
Inclusive é assim que o programa do Itaú faz.
Aqui uso 3 monitores, e o programa do Itaú cobre TODOS durante o uso.
Desinstalei por causa disso.
Se vale como segurança para o Banco Itaú, porque não pra isso?
Abra uma janela que cubra todo desktop e prenda o foco nela.
Inclusive é assim que o programa do Itaú faz.
Aqui uso 3 monitores, e o programa do Itaú cobre TODOS durante o uso.
Desinstalei por causa disso.
Se vale como segurança para o Banco Itaú, porque não pra isso?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- André Corrêa
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 03 Nov 2015 07:46
- Localização: Caraguatatuba/SP
Alternativa a BlockInput
Obrigado José, o mouse eu consegui travar assim, vou fazer alguns testes dessa forma.
-- André Corrêa
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7929
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Alternativa a BlockInput
Complicado... Não informou qual GUI/GT está usando.
Na Hwgui temos algumas funções...
Podemos perguntar isso ao pessoal do TEF ? Porque é um problema do SO não do aplicativo...
Como fazer isso sem mexer no UAC e ou sem privilégios de adm nas outras linguagens ?
E no Win10, será que irá funcionar isso ?
Prender foco via setfocus() ? usando qual GT ou GUI ? e como sair do laço(while) ? usamos o teclado ? então não travou o teclado...
E se o arquivo txt do TEF não chegar se houver erro na net ? etc...
Se o domínio da situação é controlada pelo aplicativo(programado) e esse precisa de privilégios do SO ?
Saudações,
Itamar M. Lins Jr.
Na Hwgui temos algumas funções...
Podemos perguntar isso ao pessoal do TEF ? Porque é um problema do SO não do aplicativo...
Como fazer isso sem mexer no UAC e ou sem privilégios de adm nas outras linguagens ?
E no Win10, será que irá funcionar isso ?
Prender foco via setfocus() ? usando qual GT ou GUI ? e como sair do laço(while) ? usamos o teclado ? então não travou o teclado...
E se o arquivo txt do TEF não chegar se houver erro na net ? etc...
Se o domínio da situação é controlada pelo aplicativo(programado) e esse precisa de privilégios do SO ?
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- André Corrêa
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 03 Nov 2015 07:46
- Localização: Caraguatatuba/SP
Alternativa a BlockInput
Olá Itamar,
Estou utilizando o Xailer na verdade, mas é totalmente compatível com
Harbour/xHarbour.
Já testei no Win 7, 8 e 10. A situação é a mesma para todos.
A partir do Vista existe essa restrição. Já pesquisei muito na internet via
fóruns e motores de busca, mas até o momento, nada mesmo. Ninguém tem
outra solução.
Minha ideia é fazer um hook de teclado e via API trocar cada tecla pressionada por
nulo. Com o hook, cada tecla digitada é interceptada antes de ser repassada para qualquer
aplicação. Quanto ao mouse, é mais fácil travá-lo em um ponto da tela e desativar os cliques.
Estou utilizando o Xailer na verdade, mas é totalmente compatível com
Harbour/xHarbour.
Já testei no Win 7, 8 e 10. A situação é a mesma para todos.
A partir do Vista existe essa restrição. Já pesquisei muito na internet via
fóruns e motores de busca, mas até o momento, nada mesmo. Ninguém tem
outra solução.
Minha ideia é fazer um hook de teclado e via API trocar cada tecla pressionada por
nulo. Com o hook, cada tecla digitada é interceptada antes de ser repassada para qualquer
aplicação. Quanto ao mouse, é mais fácil travá-lo em um ponto da tela e desativar os cliques.
-- André Corrêa
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho