Bloquear combinaçôes de teclas

29/01/2009

Wesley...   Como faço para bloquear algumas combinações de teclas tipo:   Ctrl+Alt+Del Ctrl+Shitf+Esc   Obrigado...
Evandro Silva

Evandro Silva

Curtidas 0

Respostas

Wesley Yamazack

Wesley Yamazack

29/01/2009

Olá, Evandro. Segue abaixo a procedure para poder desabilitar. as teclas

procedure TForm1.HabilitaCTRLALTDEL(YesNo : boolean) ;
const
  sRegPolicies = '\Software\Microsoft\Windows\CurrentVersion\Policies';
begin
  with TRegistry.Create do
  try
    RootKey:=HKEY_CURRENT_USER;
    if OpenKey(sRegPolicies+'\System\',True) then
    begin
      case YesNo of
        False:
        begin
          WriteInteger('DisableTaskMgr',1) ;
        end;
        True:
        begin
          WriteInteger('DisableTaskMgr',0) ;
        end;
      end;
    end;
    CloseKey;
    if OpenKey(sRegPolicies + '\Explorer\',True) then
    begin
      case YesNo of
        False:
        begin
          WriteInteger('NoChangeStartMenu',1) ;
          WriteInteger('NoClose',1) ;
          WriteInteger('NoLogOff',1) ;
        end;
        True:
        begin
          WriteInteger('NoChangeStartMenu',0) ;
          WriteInteger('NoClose',0) ;
          WriteInteger('NoLogOff',0) ;
        end;
      end;
    end;
    CloseKey;
  finally
    Free;
  end;
end;


//Para ativar a função execute a mesma e passe um valor Boolean para ela. Conforme abaixo
procedure TForm1.Button1Click(Sender: TObject);
begin
 HabilitaCTRLALTDEL( True ));
 //HabilitaCTRLALTDEL( False ));
end;


Espero que te ajude, qualquer coisa estamos ai.


Att,

Wesley Y
GOSTEI 0
Evandro Silva

Evandro Silva

29/01/2009

Boa tarde Wesley...   Essa rotina que vc me passou para bloquear as teclas server também para a combinação ctrl+shift+esc e alt+f4 ????   Eu preciso que o usuário não consiga usar as combinações de teclas para terminar a execução da minha aplicação  através das teclas ctrl_alt_del (que permite a troca de usuário, desligar o micro, fazer logoff, etc) e nem pela combinação de teclas ctrl+shift+esc (que habilita o Gerenciador de Tarefas do Windows) e nem pela combinação alt+f4.   O que eu preciso é travar através da minha aplicação qualquer combinação de teclas que permita que o usuário consiga encerrar o meu aplicativo sem ser atarvés do menu close ou através da digitação da senha para poder encerrar a mesma. Mesmo as teclas Alt+F4 deve ser bloqueada.   Fico no aguardo de sua resposta.   Obrigado... 
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

29/01/2009

Olá Evandro, a rotina serve para CRTL+ALT +DEL , e CTRL+SHFT+ESC.


PARA DESABILITAR O ALT+F4 você usa.


  Você terá que programar o evento FormKeyDown, do seu formulário, com a seguinte linha de código.
       if (Key = VK_F4) and (ssAlt in Shift) then
          Key := 0;

Sendo assim teu usuario, não irá conseguir fechar com ALT+F4.

Abracos.

Att,

Wesley Y
GOSTEI 0
Evandro Silva

Evandro Silva

29/01/2009

Boa tarde.   Wesley testei sua rotina em minha aplicação e quase deu 100% de acerto...   Funcionou quase tudo conforme eu preciso a única coisa que houve que não deu certo é que quando eu uso a combinação de teclas "ctrl+alt+del" o windows me exibe uma tela com as seguintes opções:    - Bloquear este computador    - Trocar usuário    - Alterar uma senha    - Cancelar   Eu preciso que nem essa tela seja exibida... o sistema tem de travar o hardwarer (micro) enquanto estiver rodando independente das combinações de teclas que o usuário use (apenas combinações: "ctrl + alguma tecla", "alt + f4").   O micro deve ser liberado apenas com a digitação de uma palavra secreta (senha).   Esta quase tudo ok... só preciso que a tela que é exibida pelo windows quando uso as teclas "ctrl+alt+del" não seja exibida também...   Estou usando o windows vista no micro que estou desenvolvendo a aplicação mas a mesma deve rodar em qualquer versão do windows (inclisive server).   Fico no aguardo... obrigado.      
GOSTEI 0
Evandro Silva

Evandro Silva

29/01/2009

Wesley..   Testei a aplicação apenas com a rotina que vc me avia passado da primeira vez, sem o código para barrar o "alt+f4" e ela rodou e não foi fechada pela combinação "alt+f4).   Vou deixar sem implementar o evendo formKeyDown que vc me passou por último.   Para encerrar a aplicação só necessito barrar a tela que mencionei anteriormente quando uso as teclas ctrl+alt+del.   Fico no aguardo.
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

29/01/2009

Evandro, estou numa missao !! descobri quais sao as chaves que respresentao as teclas que voce quer..rsrsrs.. nao vai ser facil...Mas estou tentando aqui peco que espere um pouco. Assim que tiver o resultado te respondo.

Att,

Wesley Y
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

29/01/2009

Evandro, infelizmente nao tem como. Estou vendo aqui no registro do window, mas nao tem as chamadas para desabilitar estas funcoes.
As que consegui achar foram estas.

          WriteInteger('NoChangeStartMenu',0) ;
          WriteInteger('NoClose',0) ;
          WriteInteger('NoLogOff',0) ;
          WriteInteger('NoRun',0);
          //WriteInteger('NoDesktop',0);
          //WriteInteger('NoFind',0);
          //WriteInteger('NoChange',0);
          //WriteInteger('undockwithoutlogon',0);
          //WriteInteger('NoChangeStartMenu',0);

Infelizmente, nao tem as entradas para estas chamadas do regitro.

Att,
Wesley Y
GOSTEI 0
Evandro Silva

Evandro Silva

29/01/2009

Wesley...   Bom dia.   Rapaz para eu poder concluir o aplicativo só faltava eu conseguir bloquear a tela que te falei que aparece quando se pressiona as teclas ctrl+alt+del que já mencionei anteriormente.   Ah e tem mais uma coisinha que me esqueci de perguntar também... que é como desabilitar a tecla do menu inciar do windows no teclado.   Não tem mesmo como bloquear a tela do ctrl+alt+del????   Me passe por favor uma rotina para bloquear o botão do menu iniciar do teclado.   Fico no aguardo... obrigado.
GOSTEI 0
Evandro Silva

Evandro Silva

29/01/2009

Wesley olha eu aqui de novo.   To enchendo o saco né... rsrsrsrsrs   Seguinte...   Nesse mesmo aplicativo preciso fazer com que ele rode como um serviço do windows para que não apareça no Gerenciador de Tarefas do Windows.   Estava tendo usar a seguinte dica que encontrei em um site :  Escondendo o Programa de Ctrl+Alt+Del unit Unit1; interface uses   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type   TForm1 = class(TForm)   procedure FormCreate(Sender: TObject);   procedure FormDestroy(Sender: TObject);   private   { Private declarations }   public   { Public declarations }   end; var   Form1: TForm1; implementation {$R *.DFM} {Para ocultar um programa, deve-se registrar este como um serviço do Windows. Normalmente um serviço do Windows é ativado quando com a inicialização do sistema (Windows) e pemanece ativo até a finalização deste. Este processo esconde o programa da lista "Ctrl+Alt+Del"} Const   Servico_Simples = 1;   Servico_Unregister = 1; Function RegisterServiceProcess(DwProcessID, dwType: DWord): DWord; StdCall; External 'KERNEL32.dll'; procedure TForm1.FormCreate(Sender: TObject); begin   RegisterServiceProcess(GetCurrentProcessID, Servico_Simples); end; procedure TForm1.FormDestroy(Sender: TObject); begin   RegisterServiceProcess(GetCurrentProcessID, Servico_Unregister); end; end.     Tentei usar essa dica mas da um erro na execução dizendo que não foi possível localizar o ponto de entrada do procedimento RegisterServiceProcess na de vínculo dinâmico KERNEL32.dll.   Como resolvo essse problema ?   PS.: Não se esqueça de que esse aplicativo vai estar rodando em várias versões do windows (98/ME/XP/Vista e Server).   Fico no aguardo... Obrigado
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

29/01/2009

Evandro, Bom dia. Segue abaixo um exemplo com todo material que consegui achar sobre o bloqueio de teclas. Quanto a ocultar o Programa do Gereniador de Tarefas, você nao precisa se preocupar, pois a rotina que te mandei, ela não deixar nem você abrir o gerenciador de tarefas. Porém as funções, Bloquear, Altera senha, não estão funcionando pois o windows não tem chamadas para esta Politicas, no REGEDIT. Infelizmente não tem.

Abaixo segue o link do exemplo. De uma olhada bem detalhada nele.

http://www.4shared.com/file/83234875/7c5fc21/BLOQUEAR_WINDOWS.html



Abraços

Att,

Wesley Y
GOSTEI 0
Evandro Silva

Evandro Silva

29/01/2009

Bom dia Wesley...   Valeu pela ajuda... muito grato.   Pode dar a chamada por encerrada.   Bom final de semana.
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

29/01/2009

Boa tarde Evandro,
O chamado foi concluido. Se precisar de mais alguma coisa. estamos a disposição.

Boa semana.

Att,

Wesley Y
GOSTEI 0
POSTAR