PDA

Ver la Versión Completa : ¿Cómo se Activa/Desactiva la tecla PrintScreen?


Jose_Pérez
05-11-2004, 09:25:30
¿Cómo puedo activar o desactivar la tecla print screen para evitar copiar la pantalla de mi aplicación?

Saludos.

petete2008
12-10-2008, 16:39:57
Encontrastes la solucion?
Yo busco lo mismo.
Gracias

escafandra
12-10-2008, 22:35:43
Hook al keyboard (http://msdn.microsoft.com/en-us/library/ms644990%28VS.85%29.aspx): WH_KEYBOARD_LL capturando VKEY = VK_SNAPSHOT, ó VK_PRINT

Saludos.

cHackAll
13-10-2008, 00:25:13
Encontrastes la solucion?
Yo busco lo mismo.
Gracias

Acotando (http://www.clubdelphi.com/foros/showthread.php?t=60727) a lo dicho por escafandra solo me queda pedirte que no revivas hilos que datan de tanto tiempo atrás!

Saludos (http://www.clubdelphi.com/foros/guiaestilo.php)

Lepe
13-10-2008, 06:21:28
Acotando (http://www.clubdelphi.com/foros/showthread.php?t=60727) a lo dicho por escafandra solo me queda pedirte que no revivas hilos que datan de tanto tiempo atrás!

Saludos (http://www.clubdelphi.com/foros/guiaestilo.php)

¿por qué no? ¿donde está escrito que no deba hacerse? ¿quien lo ha dicho? eh?, eh?:p

Es un hilo antiguo pero no tenía solución.
Lo ha reabierto para tratar la misma temática.


Saludos

petete2008
13-10-2008, 12:56:02
La solución de escafandra no se por donde comenzar. Soy novato y sin ningún ejemplo que me guia me cuesta entenderlo. No obstante seguiré investigando.
Gracias.

roman
13-10-2008, 15:25:48
La solución de escafandra no se por donde comenzar. Soy novato y sin ningún ejemplo que me guia me cuesta entenderlo. No obstante seguiré investigando.
Gracias.

Aquí (http://romansg.net/index.php?pg=hooks) tienes un ejemplo. De hecho, ése mismo ejemplo te sirve para lo que quieres con un par de pequeños cambios:

1. Agregar lkPrint al final de la declaración de TLockableKey:


type
{ Teclas que podemos inhabilitar }
TLockableKey = (lkAltTab, lkAltEsc, lkCtrlEsc, lkAltF4, lkWin, lkApps, lkPrint);



2. Al final de la función KbdHook agregar el bloque correspondiente a lkPrint:


function KbdHook(Code: Integer; WParam, LParam: DWORD): HHook; stdcall;
var
VkCode: DWORD;
AltDown: Boolean;
CtrlDown: Boolean;

begin
if Code = HC_ACTION then
begin
VkCode := PKbdHookInfo(LParam).VkCode;
AltDown := PKbdHookInfo(LParam).Flags and LLKHF_ALTDOWN <> 0;
CtrlDown := GetAsyncKeyState(VK_CONTROL) and LLKHF_CTRLDOWN <> 0;

{ resto del código }

if (VkCode = VK_SNAPSHOT) and (lkPrint in Keys) then
begin
Result := 1;
exit;
end;
end;

Result := CallNextHookEx(Hook, Code, WParam, LParam);
end;


// Saludos

petete2008
13-10-2008, 19:28:37
Muchisimas gracias.
lo he probado y funciona perfecto!!!
Un ejemplo es lo que necesitaba para el arranque y me lo has proporcionado.
Muy agradecido.
:)

cHackAll
13-10-2008, 23:45:28
¿por qué no? ¿donde está escrito que no deba hacerse? ¿quien lo ha dicho? eh?, eh?:p

Es un hilo antiguo pero no tenía solución.
Lo ha reabierto para tratar la misma temática...

Tienes razon Lepe, pero mi comentario consideraba el echo de que petete ya habia abierto un hilo con la misma pregunta.

Saludos

Lepe
14-10-2008, 04:53:40
ah, eso no lo sabía yo cHackAll, excuse mua :o

petete2008
14-10-2008, 22:15:43
Si, tienes razon, habia abierto un hilo con la misma pregunta.
Mis disculpas!! No volverá a suceder.
Gracias por todo!!

petete2008
16-10-2008, 22:51:44
¿ Y se puede inhabilitar la pulsación CTRL+C y CTRL+V siguiendo este metodo?
De donde saco la constante para hacerlo?

petete2008
16-10-2008, 22:54:14
Al final lo que voy hacer es un timer y que cada 1 segundo haga un clipboard.clear ya que mi idea erá que no se pudiera usar la papelera para copiar y pegar.
Supongo que no existira una orden magica para desactivarla y no quedará mas remedio que usar un timer.

cHackAll
17-10-2008, 02:50:14
Al final lo que voy hacer es un timer y que cada 1 segundo haga un clipboard.clear ya que mi idea erá que no se pudiera usar la papelera para copiar y pegar.
Supongo que no existira una orden magica para desactivarla y no quedará mas remedio que usar un timer.

Si éste hilo está relacionado con el que abriste tú (como creo que fue), considero que (como ya te dije en el otro hilo), puedes revisar el contenido del Clipboard para limpiar su contenido siempre y cuando éste sea reconocido como "no apto". Si borras su contenido sin importar su tipo o datos solo conseguiras (como dije en el otro hilo :(), usuarios frustrados.

Talvez si nos cuentas tu probema exacto... en cualquiera de los dos hilos no importa (ya qué mas dá), podremos darte alternativas.

PD; no te respondo en el otro hilo para no quedar más "mareado" :rolleyes:

petete2008
17-10-2008, 22:04:10
Lo que busco exactamente es :
Tengo usuarios que acceden por Terminal Server a un servidor.
Lo que pretendo y me gustaría es que esos usuarios no puedan hacer capturas de los datos del programa al cual tienen acceso haciendo uso de la tecla ImprPaint.
Gracias y perdonar por los dos hilos abiertos :$

Jose_Pérez
12-12-2008, 15:39:21
Pues si que era antiguo el hilo. Tanto es así que ya ni recuerdo lo que pretendía hacer con esto :D