Bloquear ctrl+alt+del e alt+f4

Boa noite, preciso bloquear as combinações de teclas ctrl+alt+del e alt+f4 para um sistema de lan. Alguém pode me indicar como fazer isso? Pelo evento keypressed não foi possível, pois não consegui pegar a combinação, alguém pode me indicar alguma solução??? se souberem de alguma dll do windows que faça isso e que de para acessar com java tbm ajuda.

Desde já agradeço.

Alexandre.

Para isso será necessário que utilize alguma biblioteca para o SO em questão. Para windows tem um monte por aí, é só procurar.
Em java, como o acesso ao SO em baixo nível não é possível, não encontrarás uma solução boa para ti ( podes achar as mega gambiarras usando dlls e .o da vida ).

Até!

Vlw, obrigado pela resposta, mas vc poderia me dizer qual dll que faz o serviço??? menos wlgina, que nao consegui obter o resultado pela forma de passagem de parametros…

qualquer ajuda eu agradeço!

Obrigado.

Alexandre.

será que não existe uma forma por combinação de keypress e eventos? Tipo algo do tipo System.in() epega o código da tecla?

Olá,

Esta dúvida já foi postada aqui no GUJ algumas vezes. A resposta sempre:
Em Java “puro” isso não é possível !!!

Primeira busca no google sobre Java bloqueando ctrl+alt+del você não acha nada interessante.
Resultado de exemplo aqui.

Após uma nova busca de leve no Oráculo agora com C++ um resultado legal mas com noticias ruins foi este.

Trecho retirado da fonte acima:

[quote]Ctrl+Alt+Del

There are several ways to disable this key combination:

  1. Disable Task Manager. This doesn’t trap the key combination, it simply disables the application (Task Manager) that pops up when this key combination is pressed. See below how to do this.
  2. Trap the keys using a keyboard device driver. For this, you need the DDK installed. I will not describe this method here.
  3. Write a GINA stub. GINA is the DLL that Winlogon uses to perform user authentication. I’m not going to discuss this method here, but you can find out how to do it here [16].
  4. Subclass the SAS window of the Winlogon process. For this, you must inject code into the Winlogon process and then subclass its Window Procedure. Two techniques for doing this are described later. [/quote]

Este artigo tem muitas referências que pode te ajudar.

Agora minha opinião sobre isto ! Bloquear ctrl+alt+del não deve ser uma responsabilidade do programa cliente, isto deve ser responsabilidade ou melhor, uma regra de segurança delegada pelo servidor da rede, no caso do Windows, uma police do Active Directory.

Ao fazer “magia negra” para sua aplicação bloquear/interceptar o ctrl+alt+del você vai ter muita dor de cabeça, pois além de garantir a compatibilidade com todas as “distros” Windows (98/Me/XP/Vista … e o que vier) você vai quebrar de vez uma das melhores caracteristicas de programas Java, a portabilidade.

É isso, espero que estude sobre configurações de dominio e gerenciamento de usuários agora. :smiley:

flw, sucesso!

Roger Leite

Olha só será que esse LINK ajuda?

http://www.javawiki.com.br/example.action?id=250996

Roger-- vc tem toda razão, eu ja fiz varias buscas e todas falam sobre a impossibilidade de o fazer com java puro, mas o programa que estou fazendo que preciso bloquear as combinações de teclas é especificamente para o Windows XP, a melhor solução pro meu problema seria utilizando dll.

Agradeço a todos pela ajuda, quando eu chegar a um resultado satisfatório posto aqui pra quem tiver a mesma dúvida…

[]s a todos.

Roger se vc ainda não achou a solução para o Alt+F4, esta ai.

Coloque apos o initComponents(); do formulario.

[code] Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {

        public void eventDispatched(AWTEvent event) {
            KeyEvent ev = (KeyEvent) event;
            if (ev.getID() == KeyEvent.KEY_PRESSED) {
                if (menu.this.isActive()) {
                    if (ev.getModifiers() == KeyEvent.ALT_MASK) {
                        if (ev.getKeyCode() == KeyEvent.VK_F4) {
                            ev.consume();
                            formWindowClosing(null);
                        }
                    }
                }
            }
        }
    }, AWTEvent.KEY_EVENT_MASK);[/code]
1 curtida

[quote=helviojunior]Roger se vc ainda não achou a solução para o Alt+F4, esta ai.

Coloque apos o initComponents(); do formulario.

[code] Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {

        public void eventDispatched(AWTEvent event) {
            KeyEvent ev = (KeyEvent) event;
            if (ev.getID() == KeyEvent.KEY_PRESSED) {
                if (menu.this.isActive()) {
                    if (ev.getModifiers() == KeyEvent.ALT_MASK) {
                        if (ev.getKeyCode() == KeyEvent.VK_F4) {
                            ev.consume();
                            formWindowClosing(null);
                        }
                    }
                }
            }
        }
    }, AWTEvent.KEY_EVENT_MASK);[/code][/quote]

È amigo se ele nao achou em DOIS ANOS, ACHO, QUE, PROVAVELMENTE ELE DESISTIU ¬¬"

Mas fica no forum para pessoas que precisarem disso.

O sistema não foi pra frente, então acabei não pesquisando mais.

Obrigado a todos que ajudaram.

E realmente, a postagem acima ajuda como referência caso mais alguém tenha uma dúvida parecida.

Estava dando erro nas linhas 06 e 10 do código apresentado acima. Estou usando o netbeans e acho que não há reconhecimento da variável menu e da classe formWindowClosing().

Após um tempo modificando o código que peguei aqui no fórum vi que não era necessário o formWindowClosing() basta fazer assim:

[code]Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {

       public void eventDispatched(AWTEvent event) {  
           KeyEvent ev = (KeyEvent) event;  
           if (ev.getID() == KeyEvent.KEY_PRESSED) {  
               if (isActive()) {  
                   if (ev.getModifiers() == KeyEvent.ALT_MASK) {  
                       if (ev.getKeyCode() == KeyEvent.VK_F4) {  
                           ev.consume(); 
                       }  
                   }  
               }  
           }  
       }  
   }, AWTEvent.KEY_EVENT_MASK); [/code]

Comigo funcionou perfeitamente. Esse trecho de código bloqueia o ALT+F4.
Me ajudou bastante este tópico. Mto obg.