PDA

Ver la Versión Completa : bloquear teclas


cmm07
25-09-2008, 16:46:32
Hola, estoy creando una aplicacion que lo que hace es cubrir toda la pantalla y crear una especie de protector, llevo casi todo listo, uno de las ultimas cosas que me falta es el bloqueo de teclas,¿Como puedo bloquear teclas?, todos los derivados de la tecla de windows , Ctrl+Alt+Spr y otras teclas especiales, no se me ocurre como hacerlo, de seguro que a ti sí......gracias...

54LU2

Lepe
25-09-2008, 17:31:19
A mi no se me ocurre, pero sé de alguien que sí se le ocurrió (http://romansg.net/index.php?pg=delphi_componentes) es el componente Hooks de nuestro moderador roman.

Echa una visual a toda la web que no tiene desperdicio.

Saludos

cmm07
25-09-2008, 17:42:37
gracias lo revisé pero coloco la instruccion y no me sucede nada, coloco :

hooks.LockKey(lkAltTab, False);
y tambien hice la prueba con
hooks.LockKey(lkAltTab, True);
en OnCreate y en OnActivate pero no pasa nada....

¿que puede ser?

roman
25-09-2008, 17:50:24
Por lo que mencionas de cubrir toda la pantalla, me da la impresión de que lo que buscas lo puedes lograr con algo mucho más eficiente que bloquear las teclas, que son los objetos Desktop, de los cuales hice mención aquí (http://www.clubdelphi.com/foros/showthread.php?t=18335#post77499).

Dejo como adjunto el mismo ejemplo que pongo allá.

// Saludos

.

roman
25-09-2008, 18:00:15
gracias lo revisé pero coloco la instruccion y no me sucede nada, coloco :

hooks.LockKey(lkAltTab, False);
y tambien hice la prueba con
hooks.LockKey(lkAltTab, True);
en OnCreate y en OnActivate pero no pasa nada....

¿que puede ser?

¿Has colocado la llamada a SetHook al inicio?

// Saludos

cmm07
26-09-2008, 01:44:39
gracias eso lo que me faltaba eñl SetHook te lo agradesco demasiado, y por lo de tu ejemplo esta buenisimo, pero yo ya tengo el mio y no me gustaria cambiarlo por otro pero igual muy util para otras personas, gracias por todo-....

54LU2

cmm07
30-09-2008, 17:23:58
Hola, se me ha surgido casi el mismo problema pero con la tecla Ctrl+Alt+Supr, como desactivo estas teclas:

Ctrl+Alt+Supr y Ctrl+Alt+.
y cuand salga de mi applicacin vuelvan a activarse

gracias.

seoane
30-09-2008, 20:21:25
Bloquear Ctr+Alt+Supr no es una tarea sencilla. Una solución es la que te dio roman, que no bloquea la combinación de teclas pero como el "Administrador de tareas" queda oculto en el otro Desktop puede servir.

Otra posible solución es usar la entrada del registro DisableTaskMgr:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
"DisableTaskMgr"=dword:00000001

De esta manera se le mostrara un bonito mensaje al usuario cada vez que pulse la famosa combinación de teclas informándole de que no tiene permiso para usar el administrador de tareas.

Y por ultimo, si de verdad quieres bloquear la combinación de teclas puedes crearte una dll GINA (esto no es algo sencillo) o puedes inyectarte a lo bestia en el proceso winlogon.exe (aquí un ejemplo (http://delphi.jmrds.com/?q=node/4)).

cHackAll
01-10-2008, 01:49:56
...o puedes inyectarte a lo bestia en el proceso winlogon.exe...

Por qué la brutalidad amigo seoane? :D

SendMessage(FindWindow(nil, 'Administrador de tareas de Windows'), WM_SYSCOMMAND, SC_CLOSE, 0);

Saludos

seoane
01-10-2008, 08:04:04
SendMessage(FindWindow(nil, 'Administrador de tareas de Windows'), WM_SYSCOMMAND, SC_CLOSE, 0);

:confused: ¿Y esto cuando lo usarias? cada vez que alguin pulsara Ctr+Alt+Supr.


Por qué la brutalidad amigo seoane? :D

:D Lo mio siempre fue matar moscas a cañonazos

roman
01-10-2008, 09:48:50
Otra posible solución es usar la entrada del registro DisableTaskMgr:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
"DisableTaskMgr"=dword:00000001

De esta manera se le mostrara un bonito mensaje al usuario cada vez que pulse la famosa combinación de teclas informándole de que no tiene permiso para usar el administrador de tareas.


Pues sí, nunca me ha quedado claro porque la gente no deshabilita el administrador de tareas si tanto les preocupa.


Y por ultimo, si de verdad quieres bloquear la combinación de teclas puedes crearte una dll GINA (esto no es algo sencillo) o puedes inyectarte a lo bestia en el proceso winlogon.exe (aquí un ejemplo (http://delphi.jmrds.com/?q=node/4)).

De bestia no tiene nada, a mi me parece una joyita :)

// Saludos

cmm07
01-10-2008, 13:11:10
gracias, a todos, ya lo solucioné, colocando un timer a un intervalo de 100 milisegundos con la siguiente instruccion:

SendMessage(FindWindow(nil, 'Administrador de tareas de Windows'), WM_SYSCOMMAND, SC_CLOSE, 0);

al hacer clic Ctrl+Alt+Supr este aparece y desaparece con un tiempo de 100 ms
gracias a toooodooosss, si necesitan algo intentaré ayudarlos..

gracias 54LU2