Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-11-2006
jgarcia01 jgarcia01 is offline
Registrado
 
Registrado: nov 2006
Posts: 5
Poder: 0
jgarcia01 Va por buen camino
Unhappy

Cita:
Empezado por roman
Prueba aquí:

http://romansg.net/index.php?pg=hooks

// Saludos
Roman disculpa mi falta de conocimiento, no soy mu experto en la materia de programar en delphi, pero lo importante es que quiero aprender, no se como usar el codigo que me estas mostrando en el enlace que me distes, copie el codigo y lo coloque en una unidad que llame bloqueodeteclas pero no se como llamar a esta unidad para que me funcione en el programa, necesito de tu ayuda o alguien que me pueda orientar.

Saludos y gracias anticipadas.
Responder Con Cita
  #2  
Antiguo 22-11-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Una vez incluída la unidad en tu proyecto, su utilización es bastante sencilla. Se trata de ejecutar el procedimiento "SetHook", a modo de preparación, y a continuación llamar al procedimiento "LockKey" tantas veces como te sea menester, esto es, como dice en la ayuda de la unidad "Hook.pas" el propio Román:

Código Delphi [-]
LockKey(lkAltEsc, true);

Para deshabilitar la combinación de teclas "ALT + ESC". Obviamente la llamada a dicho procedimiento ha de hacerse luego de hacer inicializado el "Hook", que ya he comentado que puede hacerse, sencillamente, llamando al procedimiento "SetHook" antes de llamar a "LockKey".

Para habilitar de nuevo una combinación de teclas basta con que llames a "LockKey" indicando la combinación y, esta vez, pasando como segundo parámetro el valor "false":

Código Delphi [-]
LockKey(lkAltEsc, false);

No tendrás que llamar explícitamente al procedimiento "ReleaseHook", que vendría a ser el "contrario" a "SetHook", puesto que este se llama en la cláusula "finalization" de la propia unidad "Hook.pas".

Código Delphi [-]
{...}
finalization
  ReleaseHook;
end.

Puedes usar, por ejemplo, el evento "OnCreate" de tu formulario principal para llamar al procedimiento "SetHook". A ver si el siguiente código te da alguna idea:

Código Delphi [-]
unit UfrmPrincipal;

interface

uses
  Forms, Classes, Controls, StdCtrls;

type
  TfrmPrincipal = class(TForm)
    btnHabilitar: TButton;
    btnDeshabilitar: TButton;
    procedure FormCreate(Sender: TObject);
    procedure btnHabilitarClick(Sender: TObject);
    procedure btnDeshabilitarClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmPrincipal: TfrmPrincipal;

implementation

{$R *.dfm}

uses
  UHooks; // Unidad UHooks.pas

procedure TfrmPrincipal.FormCreate(Sender: TObject);
begin
  UHooks.SetHook; // Establecemos el "hook" de teclado
end;

procedure TfrmPrincipal.btnDeshabilitarClick(Sender: TObject);
begin
  // Deshabilitamos la combinación ALT + F4
  UHooks.LockKey(lkAltF4, true);
end;

procedure TfrmPrincipal.btnHabilitarClick(Sender: TObject);
begin
  // Habilitamos la combinación ALT + F4
  UHooks.LockKey(lkAltF4, false);
end;

end.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 23-11-2006
jgarcia01 jgarcia01 is offline
Registrado
 
Registrado: nov 2006
Posts: 5
Poder: 0
jgarcia01 Va por buen camino
Talking Bloqueo de Ctrl + Alt + Supr

Ok funciona muy bien en win xp y 2000, ya lo probe y esta muy bueno, gracias a Roman y a Dec por su apoyo, pero te permite el bloqueo de ciertas teclas, alt + tab y otras, pero para ctrl + alt + supr no lo hace y se en mi aplicacion se hace imprecindible realizar este bloqueo de teclas, si tienen alguna ayuda al respecto de esto, o si Roman tiene alguna modificacion de su programa se lo sabria agradecer.

Saludos y gracias anticipadas.
Responder Con Cita
  #4  
Antiguo 23-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues no, no hay manera. Windows 2000 y XP protegen muy bien esa combinación de teclas interceptándola desde el arranque del SO, aún antes de la identificación del usuario, por lo que no hay nada que pueda hacerse. Bueno, sí la hay pero es muy compleja y propensa a errores porque debes reemplazar la dll que maneja la identificación de usuarios (gina.dll) por una propia, y aunque está documentado como hacerlo, no parece tarea sencilla, al menos requiere de mucha paciencia.

No obstante, yo preguntaría, ¿por qué consideras que es imprescindible tal bloqueo? La más de las veces, lo que importa bloquear se puede hacer con directivas del mismo S.O, por ejemplo, el acceso al administrador de tareas.

Si nos dices qué es lo que quieres evitar, quizá te podamos dar alguna idea.

// Saludos
Responder Con Cita
  #5  
Antiguo 24-11-2006
jgarcia01 jgarcia01 is offline
Registrado
 
Registrado: nov 2006
Posts: 5
Poder: 0
jgarcia01 Va por buen camino
Red face

bueno quizas el termino imprescindible no fue el mas adecuado, lo que realmente quiero Roman es evitar que algún usuario teclee esta combinación (Ctrl + Alt + Supr) y aparezca la pantalla de dialogo de seguridad de windows donde esta el administrador de tareas y otros mas, eso es lo que realmente quiero. si existe algún metodo por lo menos de evitar que aparezca eso aunque no se desactiven estas teclas tambien me sirve.

Saludos y gracias anticipadas.
Responder Con Cita
  #6  
Antiguo 24-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Es lo que te digo, no puedes evitar que aparezca esa pantalla pero sí puedes inhabilitar las opciones que ahí aparecen. Tales opciones son:
  1. Cambiar contraseña
  2. Bloquear equipo
  3. Administrador de tareas
  4. Cerrar sesión
  5. Apagar

Todas ellas se inhabilitan con las correspondientes políticas en el registro de Windows.

Las tres primeras se colocan en la clave

HKCU\Software\Microsoft\Windows\Current\Version\Policies\System

y son (valores DWORD)
  • DisableChangePassword - 1
  • DisableLockWorkstation - 1
  • DisableTaskMgr - 1

Las dos últimas se colocan en la clave

HKCU\Software\Microsoft\Windows\Current\Version\Policies\Explorer

y son (valores DWORD)
  • NoLogoff - 1
  • NoClose -1

Puedes hacerte una pequeña aplicación que escriba estas entradas o bien puedes usar directamente el editor de políticas: gpedit.msc

// Saludos
Responder Con Cita
  #7  
Antiguo 24-11-2006
jgarcia01 jgarcia01 is offline
Registrado
 
Registrado: nov 2006
Posts: 5
Poder: 0
jgarcia01 Va por buen camino
Cool

Gracias Roman por tu explicacion, bloqueare las opciones que me indicas y cualquier ayuda que necesite te estare molestando nuevamente.

Saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 11:55:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi