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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-04-2022
DarkSton DarkSton is offline
Miembro
 
Registrado: jun 2017
Posts: 64
Poder: 7
DarkSton Va por buen camino
Wink ayuda con teclas

hola amigos , quería hacer una consulta ,como puedo hacer para que yo al presionar un button1 en delphin7 se ejecute la función F8 como si hubiera presionado en el teclado F8 ?
Responder Con Cita
  #2  
Antiguo 05-04-2022
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.286
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
Crea un componente TActionList, añade una TAction a la lista.
Configura las propiedades de la TAction, en concreto la propiedad Shortcut a F8.
Y en tu botón asigna en la propiedad Action la Action creada. Con eso debería bastar.



Asignas la TAction al botón:


En general, no sólo para casos como este, sino que a mi parecer cualquier TButton/TMenúItem/... que haya en la aplicación debe estar "controlado" por su TAction corresponsdiente.

Y el código correspondiente, se debe añadir al OnExecute de la TAction.
__________________
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
  #3  
Antiguo 10-04-2022
DarkSton DarkSton is offline
Miembro
 
Registrado: jun 2017
Posts: 64
Poder: 7
DarkSton Va por buen camino
Amigo me refiero, un ejemplo cuando das clic derecho sobre el escritorio y pones actualizar y luego presionas f5 se actualiza el escritorio , ahora quiero crear un form y agregar un button lo cual al darle clic al button , simular que presiono F5 y hacer que el escritorio se actualize . Es posible eso ?
Responder Con Cita
  #4  
Antiguo 10-04-2022
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Click derecho y actualizar es lo mismo que presionar f5

creo que estas redundando la accion, en todo caso si quieres que se actualice puedes invocar el onshow
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #5  
Antiguo 12-04-2022
DarkSton DarkSton is offline
Miembro
 
Registrado: jun 2017
Posts: 64
Poder: 7
DarkSton Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Crea un componente TActionList, añade una TAction a la lista.
Configura las propiedades de la TAction, en concreto la propiedad Shortcut a F8.
Y en tu botón asigna en la propiedad Action la Action creada. Con eso debería bastar.



Asignas la TAction al botón:


En general, no sólo para casos como este, sino que a mi parecer cualquier TButton/TMenúItem/... que haya en la aplicación debe estar "controlado" por su TAction corresponsdiente.

Y el código correspondiente, se debe añadir al OnExecute de la TAction.


hice esto , pero el button se desactivo , pero lo que quiero es que cuando yo haga clic al button1 mi pc piense que el presionado F5
lo que tu pusiste hace lo contrario .
Cita:
procedure TForm1.Action1Execute(Sender: TObject);
begin
button1.Enabled := true;
end;
al presionar F5 activa el button1
Responder Con Cita
  #6  
Antiguo 12-04-2022
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Si lo que quieres es simular una pulsación de teclado, la solución la tienes aquí.
Código Delphi [-]
  SimKey(VK_F5, true);
  SimKey(VK_F5, false);
El tema es que la ventana que tenga el foco es la que recibirá el mensaje de F5 y será el mismo botón que has pulsado. No creo que eso es lo que quieras hacer.


Para actualizar todas las ventanas puedes hacer esto:
Código Delphi [-]
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);


Tendrás que especificar bien lo que pretendes hacer para que se te pueda contestar a tu pregunta.
Responder Con Cita
  #7  
Antiguo 13-04-2022
DarkSton DarkSton is offline
Miembro
 
Registrado: jun 2017
Posts: 64
Poder: 7
DarkSton Va por buen camino
Agrego
SimKey(VK_F5, true);
SimKey(VK_F5, false);
Dentro del button ?
Responder Con Cita
  #8  
Antiguo 13-04-2022
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  SimKey(VK_F5, true);
  SimKey(VK_F5, false);
end;

Ya te adelanto que aunquer eso simula una pulsación hardware, la pulsación será leida por la ventana que tenga el foco del teclado y en este caso va a ser el propio botón sobre el que haces click.
O conoces la ventana (el Handle de esa ventana) a la que lo diriges y le pasas el foco antes de simular la pustación, o no te va a funcionar.

Realmente no has explicado bien tu problema y es por eso que añado aclaraciones al tema.
Quizás te interese algo que ya te apunté:
Código Delphi [-]
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);


Saludos.
Responder Con Cita
  #9  
Antiguo 14-04-2022
DarkSton DarkSton is offline
Miembro
 
Registrado: jun 2017
Posts: 64
Poder: 7
DarkSton Va por buen camino
lo probé así pára ver si se abría el ayuda y soporte técnico de windows y no paso nada
o mas bien dicho es mi idea , mira que yo al hacer clic en el button simule la pulsacion F1 y que se abra el ayuda y soporte técnico de windows y no paso nada , haber si me deje entender
Código Delphi [-]
procedure SimKey(VK: BYTE; Down: boolean);
var
  Input: TInput;
begin
  ZeroMemory(@Input, sizeof(Input));
  Input.iType:= INPUT_KEYBOARD;
  Input.ki.wVk:= VK;
  Input.ki.wScan:= MapVirtualKey(VK, 0);
  Input.ki.dwFlags:= KEYEVENTF_EXTENDEDKEY;
  if not Down then
    Input.ki.dwFlags:= Input.ki.dwFlags or KEYEVENTF_KEYUP;
  windows.SendInput(1, tagINPUT(Input), sizeof(TInput));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  SimKey(VK_F1, true);
   SimKey(VK_F1, false);
end;

Última edición por Casimiro Notevi fecha: 14-04-2022 a las 10:27:52. Razón: Cambiar CODE por DELPHI
Responder Con Cita
  #10  
Antiguo 21-04-2022
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
¿Tienes desactivada la tecla de ayuda F1?
¿Has probado con VK_HELP?


Saludos.
Responder Con Cita
  #11  
Antiguo 22-04-2022
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.286
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 escafandra Ver Mensaje
Ya te adelanto que aunquer eso simula una pulsación hardware, la pulsación será leida por la ventana que tenga el foco del teclado y en este caso va a ser el propio botón sobre el que haces click.
O conoces la ventana (el Handle de esa ventana) a la que lo diriges y le pasas el foco antes de simular la pustación, o no te va a funcionar.
Yo creo que [escafandra] tiene razón.
El envío (o simulación de teclas) no es el problema, sino controlar a qué ventana (handle) se la envías.

La API de windows te permite obtener el Handle del desktoop, a ver si eso te sirve para luego enviarle teclas con un SendMessage.
https://docs.microsoft.com/en-us/win...tdesktopwindow
__________________
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.

Última edición por Neftali [Germán.Estévez] fecha: 22-04-2022 a las 08:47:20.
Responder Con Cita
  #12  
Antiguo 01-05-2022
DarkSton DarkSton is offline
Miembro
 
Registrado: jun 2017
Posts: 64
Poder: 7
DarkSton Va por buen camino
Cliente

Estoy trabado de agregar eso a mí cliente , ya logré bloquear muchos atajos de trampas como ejemplo alt+1 todo eso , ahora quiero que cuando el usuario use la trampa /z dentro mi cliente ,que simule la tecla F8 , esa tecla es salir del cliente
Responder Con Cita
  #13  
Antiguo 02-05-2022
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por DarkSton Ver Mensaje
Estoy trabado de agregar eso a mí cliente , ya logré bloquear muchos atajos de trampas como ejemplo alt+1 todo eso , ahora quiero que cuando el usuario use la trampa /z dentro mi cliente ,que simule la tecla F8 , esa tecla es salir del cliente
No creo que ninguno de los que hemos leído tu hilo nos hayamos enterado de que es lo que en realidad preguntas. A estas alturas no se qui quieres simular o bloquear, en que entorno te encuentras, ni lo que ahora llamas cliente. Tampoco entiendo qué quieres decir cuando te refieres a "trampas".

Si lo que pretendes es bloquear ciertas entradas de teclado y convertirlas en otras, quizás lo que te interese sea un hook al teclado. En este ejemplo se bloquean todas las entradas pero puedes cambiarlo para bloquear sólo lo que te interese y ejecutar el código que te apetezca.

En definitiva, sin una pregunta clara, detallada y bien redactada, no esperes una ayuda apropiada por mucho que se esfuerce la gente de clubdelphi.



Saludos.

Última edición por Neftali [Germán.Estévez] fecha: 02-05-2022 a las 15:38:45.
Responder Con Cita
  #14  
Antiguo 02-05-2022
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.286
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 escafandra Ver Mensaje
No creo que ninguno de los que hemos leído tu hilo nos hayamos enterado de que es lo que en realidad preguntas. A estas alturas no se qui quieres simular o bloquear, en que entorno te encuentras, ni lo que ahora llamas cliente. Tampoco entiendo qué quieres decir cuando te refieres a "trampas".
+1
Mas o menos estoy igual.
__________________
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
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
Ayuda con Teclas Combinadas... Novatin Lazarus, FreePascal, Kylix, etc. 2 30-07-2013 22:11:51
Ayuda Masters... [Presionado de Teclas] UltraMan Varios 2 21-05-2006 15:57:48
Mandar teclas via WM AYUDA!! marceloalegre Varios 1 30-09-2005 18:27:03
ayuda con teclas perico Varios 7 27-09-2004 19:06:46
Ayuda con Teclas en Segundo Plano Sundance Varios 12 29-08-2004 18:09:18


La franja horaria es GMT +2. Ahora son las 22:32:27.


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
Copyright 1996-2007 Club Delphi