Prevenir encerramento por Alt+F4 - Visual Basic .NET - Portugal-a-Programar
Prevenir encerramento por Alt+F4
By km92, August 19, 2008 in Visual Basic .NET
Queria saber como posso prevenir que o programa seja encerrado se o utilizador fizer Alt+F4 e queria perguntar se existem outros códigos tipo este, que também sirvam para fechar programas, como para o gestor de tarefas por exemplo, abre com Ctrl+Alt+Del e também com Ctrl+Shit+Esq.
Edit: E já agora se fosse possível, bloquear as teclas Atl+Tab. Já tentei várias formas que encontrei pela net mas nenhuma funcionou para mim
a unica maneira que eu sei é alterando chaves no regedit se estiveres interessado diz-me as teclas que eu posto aqui
Mas não é isso que quero, só quero bloquear para o meu programa, e se o programa crashar o utilizador tinha de saber mexer no registo para voltar ao normal :S
A unica maneira que vejo assim de repente é testares as teclas no keydown ou qq coisa do genero... mas rancamente...fazer um teste cada vez que primes uma tc e capaz de tornar o programa um bocadito para o lento.
Não estou a ver outra forma...
Mas isso não evita o ctrl + alt + del, se o focus não estiver no formulário.
Mas para o alt + F4 é simples, no evento closing testas se foste tu que mandas-te fechar o programa (com uma flag, por exemplo), senão cancelas o fecho do programa, mas acho que isso não funciona para o ctrl + alt +del.
Para o Ctrl+Alt+Del não há problema porque consigo dar a volta, basta verificar, num timer, se o processo taskmgr.exe está em execução, e se sim termina-se o processo.
Em relação ao closing event, podes-me dizer melhor como funciona? Ainda estou a aprender
Edit: Já consegui com este código:
Mas agora mantém-se a questão... Como bloqueio as teclas Alt+Tab?
Ainda não devem te devem ter respondido. Para cancelar o CTRL+ALT+DEL não dá. Ou fazes isso do de matar o tskmngr ou então fazes como eu, sempre que o nome do form em focus muda ele carrega em ESC e nao dá para aceder ao gestor de tarefas ehehehe.
Para bloquear ALT+f4 e ALT+TAB tens de usar uma api.
Public Declare Function BlockInput Lib "user32" Alias "BlockInput" (ByVal fBlock As Integer) As Integer