Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Bloquear Combinaciones de Teclas. (https://www.clubdelphi.com/foros/showthread.php?t=24707)

D-MO 31-08-2005 01:55:47

Bloquear Combinaciones de Teclas.
 
Hola a todos, agradeceria a todo aquel que me pueda ayudar con mi problema.

Estoy haciendo una aplicacion en la que necesito bloquear algunas combinaciones de teclas, entre las que estan:

-----[ALT]+[TAB] (o si fuere el caso indicarle a delphi que sea el unico que puede estar al frente)
-----[CTRL]+[ALT]+[DELETE]

Segun leia (espero me corrijan si me equivoco pero soy nuevo en delphi) se pueden capturar los eventos de windows con delphi, pero como lo hago??:confused:
Pienso que si puedo capturar los eventos, podre bloquear los eventos que resultan de la combinacion de teclas anteriormente descritas.

Les agradeceria que me ayudaran con mi problema
Nota:Con respecto a la guia de estilo, de publicar mas de una pregunta en el mismo tema, no creo que la este violando, pues lo que pregunto es sobre un mismo tema.

:)Gracias de Antemano:)

roman 31-08-2005 04:49:54

La combinación Ctrl+Alt+Del en Win2000/XP está muy protegida y hasta donde sé la única manera de bloquearla es rescribiendo una biblioteca dll de Windows llamada msgina.dll lo cual no es una tarea sencilla.

En cuanto a otras combinaciones como la de Alt+Tab, pásate por mi página y bájate la unidad hooks.pas

// Saludos

User_baja1 31-08-2005 11:27:52

Yo tengo unas rutinas que te pueden servir, yo las gasto para evitar que me cierren la aplicacion o cambien de tarea, asi pues deshabilito el administrador de tareas y las combinaciones [ESC+CTRL] [ALT+TAB] [CTRL+ALT+SUP]

Despues de consular en foros y paginas de trucos ... "he construido" esto:

Bloquear_Teclas_windows(valor:boolean);




y el codigo es:
procedure Bloquear_Teclas_windows(valor:boolean);
var dummy:integer;
begin
if valor then SetHook;
LockKey(lkAltTab,valor);
LockKey(lkAltEsc,valor);
LockKey(lkCtrlEsc,valor);
LockKey(lkAltF4,valor);
LockKey(lkWin,valor);
LockKey(lkApps,valor);
if Not valor then ReleaseHook;
teclasWinBloq:=Valor;
if Valor then SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @dummy, 0)
else SystemParametersInfo( SPI_SCREENSAVERRUNNING, 0, @dummy, 0);
DisableTaskMgr(valor);
if Not valor then LockWorkStation;
end;



procedure DisableTaskMgr(bTF: Boolean);
var
reg: TRegistry;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_CURRENT_USER;
reg.OpenKey('Software', True);
reg.OpenKey('Microsoft', True);
reg.OpenKey('Windows', True);
reg.OpenKey('CurrentVersion', True);
reg.OpenKey('Policies', True);
reg.OpenKey('System', True);
if bTF = True then
begin
reg.WriteString('DisableTaskMgr', '1');
end
else if bTF = False then
begin
reg.DeleteValue('DisableTaskMgr');
end;
reg.CloseKey;
end;


function LockWS: Boolean;
// by Thomas Stutz, SDC
type
TLockWorkStation = function: Boolean;
var
hUser32: HMODULE;
LockWorkStation: TLockWorkStation;
begin
// Here we import the function from USER32.DLL
bloq_estacion:=False;
hUser32 := GetModuleHandle('USER32.DLL');
if hUser32 <> 0 then
begin
@LockWorkStation := GetProcAddress(hUser32, 'LockWorkStation');
if @LockWorkStation <> nil then
begin
LockWorkStation;
Result := True;
bloq_estacion:=True;
end;
end;
end;




Espero que te sirva.

D-MO 31-08-2005 16:23:07

Muchas Gracias
 
En serio les agradezco a ambos, Luego les cuento como me salio todo.
Hasta Luego.

roman 24-11-2006 03:14:51

¿Y bien? ¿Como fue todo?

:rolleyes:

egostar 24-11-2006 03:17:58

Cita:

Empezado por roman
¿Y bien? ¿Como fue todo?

:rolleyes:

jajaja, como dirian en el Norte (Monterrey, Mexico para los que no son de aca), te la bañaste.

roman 24-11-2006 03:25:10

:D

Bueno, encontré este hilo por casualidad y me dio curiosidad por saber qué había pasado.


La franja horaria es GMT +2. Ahora son las 10:36:40.

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