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: 2822
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
- Curtiu: 2 vezes
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: 2822
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
- Curtiu: 2 vezes
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: 20420
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 1914
- 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: 20420
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 2822
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
- Curtiu: 2 vezes
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: 20420
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 8029
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 2 vezes
- Curtiram: 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