Jump to content
Fórum Script Brasil
  • 0

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


BertognaJr.

Question

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 to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.6k
×
×
  • Create New...