Bloquear teclado: JNI ???  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
caique_castanho
Thread.start()
[Avatar]

Membro desde: 09/11/2006 09:41:56
Mensagens: 30
Offline

Pessoa, preciso bolquear o teclado do usuário durante uma operação no meu programa, alguém pode me dar uma ajuda quanto a isso, pesquisei um pouco na internet e vi que terei que usar JNI pra carregar a dll do windows e por ela bloquear o teclado, porém nunca usei esse recurso....alguém pode me ajudar ??? T+
[Email] [MSN]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Use JNA e declare a API BlockInput.

Entretanto, o usuário deve ser administrador da máquina (ou no caso do Windows Vista, o programa deve rodar com permissão de administrador, o que é mais chato.) Veja isso em:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=880586&SiteID=1
[WWW]
fuzzyMind
Debugger

Membro desde: 03/09/2007 18:55:49
Mensagens: 69
Localização: Espanha
Offline

Vc nao poderia criar um KeyListener e filtrar qualquer tecla do usuario enquanto estiver processando ?


http://java.sun.com/docs/books/tutorial/uiswing/events/keylistener.html

Before I speak, I have something important to say. - Groucho Marx
joncmuniz
Thread.start()

Membro desde: 29/03/2006 15:10:09
Mensagens: 32
Offline

Bem caique não sei se funciona assim carregar uma dll do windows...
Bem pelo que eu sei, e já fiz algo em JNI...
Primeiro passo Procure ou faça vc mesmo um aplicacao em C ou C++ que faça a rotina que vc pretende
Segundo passo aí sim execute os passos para linkar a aplicacao C na sua aplicacao Java

Exemplo JNI - http://www.guj.com.br/posts/list/51822.java#272822
Link especificacao JNI - http://java.sun.com/j2se/1.5.0/docs/guide/jni/spec/jniTOC.html
Eu sempre consegui bons exemplos de codigos C e C++ http://www.codeproject.com

apos vc da uma olhadinha nessas coisas me fale, pra ver no que posso te ajudar..

Aprender......
[Email] [MSN]
caique_castanho
Thread.start()
[Avatar]

Membro desde: 09/11/2006 09:41:56
Mensagens: 30
Offline

OK, obrigado por enquanto pessoal, já me deram uma luz, vou ver o que consigo e volto a postar, T+
[Email] [MSN]
Cabazzo
JavaChild
[Avatar]

Membro desde: 06/11/2007 13:58:32
Mensagens: 137
Localização: Recife, PE
Offline

Bem, eu uso assim com o JNative:

import org.xvolks.jnative.JNative;
import org.xvolks.jnative.Type;
import org.xvolks.jnative.exceptions.NativeException;

/**
*
* @author sandro
*/
public class FuncoesNativas {

/** Classe estática */
static{
}

public static final boolean travaTeclado(boolean Blk) throws NativeException, IllegalAccessException
{
int Ret = 0;
JNative jn = new JNative("user32.dll", "BlockInput");
jn.setRetVal(Type.INT);
jn.setParameter(0, "Blk" );
jn.invoke();
Ret = jn.getRetValAsInt();
jn.dispose();

if(Ret == 1){
return true;
}else{
return false;
}
}
}

Vê se te serve...

Flex 4.5 ACE Certified.
[MSN]
KWill
Virtual Machine Man
[Avatar]

Membro desde: 18/09/2006 10:05:46
Mensagens: 609
Offline

Ok, posso usar a função BlockInput via JNA no Windows. Mas alguém tem alguma idéia de como eu conseguiria fazer alguma coisa semelhante nos Unix ou pelo menos no Linux?

Inté.

"Só estou certo de que não possuo outras certezas" - KWill
"Não penso, mas Googlo, logo existo!" - Geração Copy-Cola
TheKill
GUJ Master
[Avatar]

Membro desde: 29/09/2006 18:06:30
Mensagens: 1142
Localização: Araranguá - SC
Offline

Voltando reabrir este tópico..

Amigos teste o código do caro amigo Cabazzo

Porém resultados "negativos" foram encontrados..

Exemplo:

Teste sem telas visuais ou implementações.. Apenas com o código para Bloquear e Desbloquear.
Resultado: OK.

Teste com telas visuais e implementações... E código para Bloquear e Desbloquear
Resultado -> Bloqueando OK.
-> Desbloqueando Falha.
-> Travamento do Processo.

Espero que alguem tenha encontrado uma solução para isto..

Agradeço atenção de todos


Att. Jonas

Pessoal se foi respondido com eficiência...

Nao custa finalizar o topico ^^ [RESOLVIDO]

Isso ai, valeu xD

GrupoJavaSC

[Email] [MSN]
_Zell_
Debugger
[Avatar]

Membro desde: 21/07/2010 15:44:12
Mensagens: 66
Offline

"Redesenterrando o tópico" xD

TheKill, eu testei o código do colega Cabazzo mas pra mim ta dando o seguinte erro:



Tem como me dar uma ajuda ? xP
De qualquer forma eu agradeço a atenção!

o/
_Zell_
Debugger
[Avatar]

Membro desde: 21/07/2010 15:44:12
Mensagens: 66
Offline

Putzzzz... eu tava lendo ainda pouco sobre os métodos native... já vi a burrada que eu fiz... eu não coloquei a dll da API no projeto xD

Agora foi de boa =)

De qualquer forma obrigado o/
acramos
Entusiasta Java
[Avatar]

Membro desde: 17/04/2007 15:07:38
Mensagens: 19
Offline

Pessoal, eu utilizei o código acima, porém percebi que não estava destravando.
Então fiz algumas alterações de forma que destravasse.
Estou postando aqui para poder auxiliar os que precisarem.


import org.xvolks.jnative.JNative;
import org.xvolks.jnative.Type;
import org.xvolks.jnative.exceptions.NativeException;

import java.io.FileDescriptor;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import java.io.PrintWriter;
import java.io.StringWriter;

public class DelsoftTravaTeclado {

/** Classe estática */
static{
}

public static final boolean TravaTeclado(boolean Blk) throws NativeException, IllegalAccessException
{
int Ret = 0;
JNative jn = new JNative("user32.dll", "BlockInput");
jn.setRetVal(Type.INT);
if (Blk){
jn.setParameter(0,"Blk");
}else{
jn.setParameter(0, 0);
}
jn.invoke();
Ret = jn.getRetValAsInt();
jn.dispose();

if(Ret == 1){
return true;
}else{
return false;
}
}
}

Att
Ana Claudia Ramos
ivonei
Smalltalk

Membro desde: 15/12/2008 14:53:27
Mensagens: 1
Offline

Olá

quando eu trabalhava desenvelvendo para frente de caixa eu usava a dll da bematech

tinha uma função que funcionava direitinho.

não lembro dos detalhes mas se vc der uma pesquisada vai encontrar, ou se precisar de ajuda favor entrar em contato

ivonei.ti@gmail.com
Arquivo
Bemafi32.dll





[Email] [MSN]
VantuilJose
JavaChild
[Avatar]

Membro desde: 15/09/2008 11:47:53
Mensagens: 101
Offline

Aqui eu explico direitinho como fazer isso: http://vantuiloliveira.blogspot.com/2011/10/java-travando-o-teclado.html

Estou usando a mesma idéia do acramos.

[]'s

Vantuil Oliveira
Tecnólogo em Análise e Desenvolvimento de Sistemas - IFMG Bambuí
Mestrando em Ciência da Computação - UFOP
-
"I am the maniac serial killer that knows where you live who will maintain your code!"
[MSN]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team