Ir para conteúdo
Fórum Script Brasil
  • 0

Desativando o Alt+F4 e o Ctrl+Alt+Del


BertognaJr.

Pergunta

Olá, estou tentando fazer um programa de gerenciamento de lan houses e encontrei um problema: ele pode ser facilmente fechado apertando Alt+F4 ou então Ctrl+Alt+Del, existe alguma maneira de bloquear estes comandos? Tentei fazer isso usando o SendKey que era o comando que eu conhecia, mas não deu certo.

Agradeço desde já,

BertognaJr.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

No evento 'FormClosing' do formulário, coloque:

e.Cancel = <VAR>
'<Var> é uma variável booleana de controle. Quando o usuário quiser realmente sair do programa (com algum botão de fechar ou algo assim), o valor é false e assim o formulário é fechado. Senão, use <VAR> vai ser true, impedindo o usuário de fechar o Form de qualquer maneira.

Já para o Ctrl+Alt+Del:

Achei um exemplo em: http://www.developerfusion.co.uk/show/152/. Olhe. Infelizmente, a classe gerenciada 'System.Windows.Forms.SystemInformation', não fornece essa informação, apesar de internamente usar a função da API do Windows 'SystemParametersInfo' (é com essa função que você muda a disponibilidade do Ctrl+Alt+Del) para obter várias informações como, por exemplo, o modo de boot na qual foi iniciado a sessão.

Até mais, estamos aí!

Link para o comentário
Compartilhar em outros sites

  • 0

Olha, consegui fazer só com o primero codigo que você postou, mas isso só resolve meu problema em parte porque ainda fica possível que o usuário aperte alt + tab por exemplo e continue usando normalmente o computador mesmo após expirar seu tempo.

A minha idéia era tentar usar um comando que impedisse o programa de executar a função pré definida pelo windows sempre que o usuário apertasse uma combinação de teclas.Basicamente ficaria assim:

dim altpressionado, f4pressionado as boolean
Private Sub me_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
            Select Case e.KeyCode
                    Case Keys.Alt 
                            altpressionado = true
                    Case Keys.F4 
                             f4pressionado = true
            End Select
End Sub
Private Sub me_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
            Select Case e.KeyCode
                    Case Keys.Alt 
                            altpressionado = false
                    Case Keys.F4 
                             f4pressionado = false
            End Select
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
           If altpressionado = true and f4pressionado = true then
                    'comando mágico que cancela a ação padrão
           end if
End Sub
P.S, moderador: use as tags 'code' (

Dessa maneira eu poderia desabilitar vários atalhos de uma vez só, o que não ocorre quando eu faço do primeiro jeito.

De qualquer forma muito obrigado,

BertognaJr.

) para referir a código fonte!
Link para o comentário
Compartilhar em outros sites

  • 0

Olha, esse trecho de código não vai funcionar, pois Alt+Tab é uma tecla de sistema, ou seja, está além do controle da aplicação. De agora, só consigo pensar na função SetWindowsHookEx (http://msdn2.microsoft.com/en-us/library/ms644990.aspx) da API do Windows, pois com ela você monitora eventos do sistema, inclusive teclas de sistemas. Só para mais informações, ganchos (hooks) são mecânismos de interceptação de processamento na plataforma Windows.

De agora é só, se souber de uma solução mais simples eu falo aqui.

Até mais, falows! Qualquer coisa estamos aí!

Soluções mais fáceis:

-> Usando a função da API RegisterHotKey (http://msdn2.microsoft.com/en-us/library/ms911003.aspx; mais fácil que usar SetWindowsHookEx): http://www.codeguru.com/Cpp/misc/misc/keyb...ticle.php/c433/ (um exemplo, em C++, mas você já olha e adquire base, além de pesquisar a documentação dessa).

-> Pelo registro do Windows (até o instalador pode fazer isso xD): http://www.windowsnetworking.com/kbase/Win...ableAltTab.html

Caso queira delegar a função de ativar/desativar Alt+Tab pelo registro ao programa em si, dê uma olhada nas classe 'Registry' (representa as chaves raiz do registro) e 'RegistryKey' (representa uma chave qualquer, em qualquer nível) do namespace 'Microsoft.Win32', essa classes que ajudará na manipulação do registro.

Até mais, qualquer dúvida, post!

Link para o comentário
Compartilhar em outros sites

  • 0

Olá,

eu tentei ler os códigos em C mas não entendi muito bem e não consegui chamar a API do windows. E o outro jeito, editar o registro pelo instalador, eu também não consegui porque eu só sei fazer o setup do meu programa usando um gerador que chama INNO Setup.

De qualquer forma obrigado, vou continuar tentando.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      652k
×
×
  • Criar Novo...