Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-06-2024
buenarquero buenarquero is offline
Miembro
 
Registrado: feb 2008
Posts: 33
Poder: 0
buenarquero Va por buen camino
Desactivar teclas de función en todo el sistema

Tengo una aplicación en la que necesito desactivar algunas teclas de función, para que no produzcan ningún efecto en otra aplicación externa, de uso y distribución gratuitos, que ejecuto desde mi aplicación y muestro dentro de la ventana principal de ésta, con el objeto de que el usuario no pueda acceder a determinadas funciones de dicha aplicación a través del teclado (creo que me he explicado bien, si no decidmelo). He probado con hooks para interceptar las pulsaciones de dichas teclas de función a nivel de sistema, pero, no se por qué, solo funcionan si el foco está en mi aplicación, con lo cual no me sirve para nada (no se si el código que encontré no estaba correcto o yo lo hice mal, pero creo que lo hice bien). He buscado y rebuscado en otros hilos y no he encontrado más que los susodichos hooks y una función que desactiva todo el teclado y el ratón, lo cual no me sirve. A ver si alguien puede ayudarme con esto. ¡Gracias de antemano! Aviso que no soy un programador experto sino solo aficionado.
Responder Con Cita
  #2  
Antiguo 30-06-2024
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.405
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
O sea, quieres que desde tu programa desactivar las teclas de función de otro programa que no es tuyo ni tienes el código, ¿es eso?
Responder Con Cita
  #3  
Antiguo 01-07-2024
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.874
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por buenarquero Ver Mensaje
Tengo una aplicación en la que necesito desactivar algunas teclas de función, para que no produzcan ningún efecto en otra aplicación externa, de uso y distribución gratuitos, que ejecuto desde mi aplicación y muestro dentro de la ventana principal de ésta, con el objeto de que el usuario no pueda acceder a determinadas funciones de dicha aplicación a través del teclado
Este comportamiento es a todas luces "raro".
No da muchos detalles de las 2 aplicaciones, ni de qué teclas quieres desactivar.
Tampoco explicas qué código has utilizado "que no te funciona".

Cita:
Empezado por buenarquero Ver Mensaje
He probado con hooks para interceptar las pulsaciones de dichas teclas de función a nivel de sistema, pero, no se por qué, solo funcionan si el foco está en mi aplicación, con lo cual no me sirve para nada (no se si el código que encontré no estaba correcto o yo lo hice mal, pero creo que lo hice bien). He buscado y rebuscado en otros hilos y no he encontrado más que los susodichos hooks y una función que desactiva todo el teclado y el ratón, lo cual no me sirve.

Yo sigo pensando que la solución son los hooks de teclado a nivel de sistema. De otra forma sólo funcionarán cuando tu aplicación esté abierta.
Hay diferentes hilos en los foros que hablan sobre el tema, si buscas encontrarás.
Había hace tiempo un componente de [Roman] que solucionaba esto, y aunque actualmente la web no está disponible, "tirando" de WayBackMachine, se puede acceder a ella.
Revisa este enlace:
https://web.archive.org/web/20050908...m/users/roman/
Y concretamente a este componentes (dentro está la explicación):
https://web.archive.org/web/20050214...oman/hooks.php
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 01-07-2024
buenarquero buenarquero is offline
Miembro
 
Registrado: feb 2008
Posts: 33
Poder: 0
buenarquero Va por buen camino
Tienes razón

Tienes razón Neftalí, no doy indicaciones de que aplicaciones se trata porque no lo creía necesario. Y en cuanto a lo de raro, te aseguro que no se trata de nada raro, solo incorporo una aplicación de lectura de PDF gratuita a mi aplicación, pero no quiero que el PDF, que es original mío, lo puedan imprimir ni tampoco capturar la pantalla, ni interrumpir el proceso mediante ctrl+alt+supr. Esto último lo solucioné sin hooks de teclado, cerrando mediante un timer, la ventana del administrador de tareas en cuanto esta se abre. Lo de imprimir también mediante la misma técnica, pero hay otra funciones del software gratuito, a las que se accede por menú que aparece al pulsar determinadas teclas de función y que no se pueden bloquear de esta forma, o al menos yo no he podido. Son funciones como la de guardar el PDF, abrirlo con Adobe reader etc..., lo cual le daría paso al usuario a todo lo que quiera hacer con el PDF y que no debe poder hacer, para lo cual, originalmente está incrustado en el ejecutable de mi aplicación. Por eso necesito bloquear algunas o todas las teclas de función (F1 a F12) y que su pulsación no llegue al programa lector de PDF, independientemente de que el foco esté en él o no.

Última edición por buenarquero fecha: 01-07-2024 a las 16:31:44.
Responder Con Cita
  #5  
Antiguo 01-07-2024
buenarquero buenarquero is offline
Miembro
 
Registrado: feb 2008
Posts: 33
Poder: 0
buenarquero Va por buen camino
Enlaces

En cuanto a los links que incluyes, el primero no tiene activo el enlace a la parte de hooks y el segundo, parece que solo ofrece solución para determinadas teclas o combinaciones, pero no para las teclas de función, al menos yo veo como se podría adaptar para que sirva para las teclas de función.
Responder Con Cita
  #6  
Antiguo 02-07-2024
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.874
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por buenarquero Ver Mensaje
...solo incorporo una aplicación de lectura de PDF gratuita a mi aplicación, pero no quiero que el PDF, que es original mío, lo puedan imprimir ni tampoco capturar la pantalla, ni interrumpir el proceso mediante ctrl+alt+supr. Esto último lo solucioné sin hooks de teclado, cerrando mediante un timer, la ventana del administrador de tareas en cuanto esta se abre. Lo de imprimir también mediante la misma técnica, pero hay otra funciones del software gratuito, a las que se accede por menú que aparece al pulsar determinadas teclas de función y que no se pueden bloquear de esta forma...
Creo sinceramente que este enfoque no es el adecuado, pero simplemente es una opinión.

Por un lado, porque al final me parece muy difícil (por no decir imposible) poder controlar todas esas opciones. Al final en los sistema actuales (S.O.) hay tantas opciones que le veo agujeros de funcionamiento. Hay aplicaciones de terceros (capturadores de pantalla, administradores de procesos/tareas,...) que pueden sustituir a las originales que no veo forma de bloquearlos. Incluso pueden cambiar las teclas predefinidas para determinadas operaciones, por lo tanto capturar el PRINTPANTALLA o el CTRL+ALT+SUPR tampoco te asegura nada.

Por otro lado, me parece peligroso "bloquear" determinadas teclas que pueden afectar a otros aspectos del sistema, digamos que estás excediendo los límites de tu aplicación (por decirlo de alguna manera).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 02-07-2024
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.414
Poder: 23
fjcg02 Va camino a la fama
No sé si lo que buscas lo cubre la firma digital del documento.

Siempre podrán como comentan hacerle una foto o echar una tarde y transcribir de pé a pá el documento completo.

Suerte, y nos comentas cómo lo has solucionado.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #8  
Antiguo 02-07-2024
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.874
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por fjcg02 Ver Mensaje
Siempre podrán como comentan hacerle una foto o echar una tarde y transcribir de pé a pá el documento completo.
Es que no es necesario, yo uso un capturador "no estandard" con las siguientes teclas:



Pero es que se pueden personalizar o simplemente se puede lanzar la copia utilizando el menú contextual de la aplicación desde la barra de tareas.
Hay tantas alternativas, que por eso me parece un enfoque que no tiene buena salida.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 01-07-2024
buenarquero buenarquero is offline
Miembro
 
Registrado: feb 2008
Posts: 33
Poder: 0
buenarquero Va por buen camino
código que usé

Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Este comportamiento es a todas luces "raro".
No da muchos detalles de las 2 aplicaciones, ni de qué teclas quieres desactivar.
Tampoco explicas qué código has utilizado "que no te funciona".

Yo sigo pensando que la solución son los hooks de teclado a nivel de sistema. De otra forma sólo funcionarán cuando tu aplicación esté abierta.
Hay diferentes hilos en los foros que hablan sobre el tema, si buscas encontrarás.
Había hace tiempo un componente de [Roman] que solucionaba esto, y aunque actualmente la web no está disponible, "tirando" de WayBackMachine, se puede acceder a ella.
Revisa este enlace:
https://web.archive.org/web/20050908...m/users/roman/
Y concretamente a este componentes (dentro está la explicación):
https://web.archive.org/web/20050214...oman/hooks.php

Transcribo el código que usé para los hooks. A ver si lo hago bien porque no lo he hecho nunca y no se si cumplirá las recomendaciones del foro.
El código lo saqué de Trucos Delphi, si no recuerdo mal.

INTERCEPTAR EL TECLADO MEDIANTE HOOKS

Declarar variables

Código Delphi [-]
var    Form1: TForm1;  
KBHook: HHook;
 
function KeyboardHookProc(Code: Integer; WordParam: Word; LongParam: LongInt): LongInt; stdcall;

implementation.

Instalar el Hook

procedure TForm1.FormCreate(Sender: TObject) ;
begin 
KBHook:=SetWindowsHookEx(WH_KEYBOARD,{callback >}@KeyboardHookProc,  HInstance, GetCurrentThreadId()) ;
end;

Función que intercepta el teclado

function KeyboardHookProc(Code: Integer; WordParam: Word; LongParam: LongInt) : LongInt;
begin 
  case WordParam of  
  vk_Left:   begin {Instrucciones a realizar} end;  
  vk_Right:  begin {Instrucciones a realizar} end; 
  vk_Up:     begin {Instrucciones a realizar} end;  
  vk_Down:   begin {Instrucciones a realizar} end;  
  end; 
  Result:=0; { Para evitar que Windows pase las pulsaciones de teclas a la ventana de
  destino, el valor del resultado debe ser un valor distinto de cero.}
end;

Liberar el hook

procedure TForm1.FormDestroy(Sender: TObject) ;
begin  
  UnHookWindowsHookEx(KBHook) ;
end;

Última edición por Neftali [Germán.Estévez] fecha: 02-07-2024 a las 09:19:32. Razón: Añadir TAGs al código
Responder Con Cita
  #10  
Antiguo 01-07-2024
lucho6007 lucho6007 is offline
Miembro
 
Registrado: ene 2009
Ubicación: Junín, pcia de BsAs, Argentina
Posts: 83
Poder: 17
lucho6007 Va por buen camino
Me parece que es imposible de hacer

No termino de entender por qué alguien querría evitar que capturen la pantalla. ¿y si le sacan una foto a la pantalla? ¿y si el software corre virtualizado y hacen captura de pantalla en la PC host? ¿si corren algún software de captura automática de pantalla o de grabación del estilo de OBS? Es imposible enviar que se capture la pantalla, si se muestra, se puede capturar.


Saludos
Responder Con Cita
  #11  
Antiguo 02-07-2024
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.405
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por lucho6007 Ver Mensaje
No termino de entender por qué alguien querría evitar que capturen la pantalla. ¿y si le sacan una foto a la pantalla? ¿y si el software corre virtualizado y hacen captura de pantalla en la PC host? ¿si corren algún software de captura automática de pantalla o de grabación del estilo de OBS? Es imposible enviar que se capture la pantalla, si se muestra, se puede capturar.
Saludos
Es así, no vale la pena complicarse tanto.
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Detectar pulsación de teclas Ctrl, Alt y Shift y teclas virtuales (de función,...) rrf Varios 11 09-08-2017 13:24:21
Aparece símbolo de moneda en todo el sistema Oscar Guzmán OOP 3 23-03-2015 07:07:55
Desactivar y activar sonido del sistema nandynna API de Windows 5 08-01-2009 00:12:21
como desactivar las teclas Alt o Ctrl Hitsugaya API de Windows 2 03-12-2008 20:13:41
Teclas de Función Dado de baja Varios 2 05-09-2007 15:02:07


La franja horaria es GMT +2. Ahora son las 16:05:54.


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