Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como Crear Programa Que Pulse Una Tecla Continuamente? (https://www.clubdelphi.com/foros/showthread.php?t=72139)

darkcuevas 30-01-2011 04:54:54

Como Crear Programa Que Pulse Una Tecla Continuamente?
 
hola.
principal mente disculpen que el titulo no explique bn lo que quiero hacer es que me resulta algo difisil explicarlo

voy ha hacer un par de preguntas que creo q van por el mismo lado

1° estoy creando un programa que hace que se precione constante mente una o varias teclas por ejenplo: yo quiero que la letra "a" se precione continua mente sin nesesidad de pulsarla en el teclado...(la pregunta es que codigo devo usar "no tengo ningun tipo de idea de como va el codigo que se usa en este caso")

2° yo quiero que al pulsar por ejenplo: Ctrl+A se active un boton o se prenda un time en pocas palacres un acceso rapido por el teclado (como logro que esto pase?)


bueno espero sus respuestas salu2 y grax de ante-mano

nota: me conedto por la mañana xD Bye

ecfisa 30-01-2011 12:17:10

Hola darkcuevas.

Podrías utilizar un TTimer para simular la presión continua de una tecla y para tu segunda pregunta, aprovechar el evento OnKeyPress del form.

Ejemplo : ( en un TForm poné un TTimer y un TEdit o un TMemo para visualizar el resultado )
Código Delphi [-]
...
procedure TForm1.FormCreate(Sender: TObject);
begin
  KeyPreview:= True;
  Timer1.Enabled:= False;
  Timer1.Interval:= 250;  // 1/4 seg (o lo que gustes)
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  keybd_event(Ord('A'),0,0,0);  // simular tecla presionada
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  Msg: TMsg;
begin
  if (ssCtrl in Shift) and (Key = Ord('A')) then  // Ctrl + A
  begin
    PeekMessage(Msg, 0, WM_CHAR, WM_CHAR, PM_REMOVE); //Quitar Beep
    Timer1.Enabled:= not Timer1.Enabled;  // Activar/Desactivar TTimer
  end;
end;
...

La repetición de pulsación de tecla se activa/desactiva con Ctrl+A.


Un saludo.

Casimiro Noteví 30-01-2011 14:12:51

Y felizmente, darkcuevas, ha obtenido el código realizado muy inteligentemente por ecfisa, un código creado coherentemente en el que repite constantemente una tecla repetidamente hasta que el usuario decida convenientemente que ya no debe repetirse ininterrumpidamente.

Caral 30-01-2011 14:17:30

Hola
Y colorin, colorado......:D:D:p
Saludos

darkcuevas 30-01-2011 15:01:51

Cita:

Empezado por ecfisa (Mensaje 389350)
Hola darkcuevas.

Podrías utilizar un TTimer para simular la presión continua de una tecla y para tu segunda pregunta, aprovechar el evento OnKeyPress del form.

Ejemplo : ( en un TForm poné un TTimer y un TEdit o un TMemo para visualizar el resultado )



La repetición de pulsación de tecla se activa/desactiva con Ctrl+A.


Un saludo.


hola quetal bueno ya prove el codigo que pulsa la tecla


pero no entiendo como calocar el de acceso rapido me podrias explicas un poco mejor como colocarlo?? porfavor

no entiendo bn lo del evento dime como lo pondrias tu paso por paso si no es mucha molestia :)

(soy algo nuevo en este asunto)


haaa y que conponente es este FormKeyDown???

Casimiro Noteví 30-01-2011 15:18:59

El form tiene el evento keydown, escribe el código en él.

darkcuevas 30-01-2011 16:00:51

mira yo escrivo el codigo en el evento pero nada al conpilar y marcar ctrl+a no pasa nada

Casimiro Noteví 30-01-2011 16:18:23

Bueno, en el ejemplo que ha puesto ecfisa es ctrl+A mayúscula.

darkcuevas 30-01-2011 16:40:42

no nada :(

Casimiro Noteví 30-01-2011 16:45:14

Cita:

Empezado por darkcuevas (Mensaje 389369)
no nada :(

¿No nada,? ¡qué!, te recomiendo que leas nuestra guía de estilo, es que no somos adivinos ;)

darkcuevas 31-01-2011 12:50:25

disculpa que no aya segido respondiendo ayer es que me fui a dormir devido que tenia mucha fiebre


bueno continuo

Código Delphi [-]
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  Msg: TMsg;
begin
  if (ssCtrl in Shift) and (Key = Ord('A')) then  // Ctrl + A
  begin
    PeekMessage(Msg, 0, WM_CHAR, WM_CHAR, PM_REMOVE); //Quitar Beep
    Timer1.Enabled:= not Timer1.Enabled;  // Activar/Desactivar TTimer
  end;
end;

yo introdusco el codigo en el evento pero al intentar encender el timer con Ctrl+A
no pasa nada no se enciende ni nada tanbien hise lo que medijiste y pusela "a" en minuscula
pero no paso nada me podrias explicar el codigo?:)

ecfisa 31-01-2011 18:31:29

Hola darkcuevas.

Si copias/pegas el código que te puse y los eventos correspondientes están asignados, te aseguro que funciona.
Para visualizar el funcionamiento, usá un Edit cuyo Tab Order sea el primero.

Te explico básicamente como funcióna el código.

Cuando se crea el form, se pone la propiedad KeyPreview a verdadero haciendo que el form capture los eventos de teclado
antes que el control activo. Se desactiva el TTimer y se ajusta el intervalo con que se disparará el evento OnTimer.

Al dispararse el evento OnTimer, mediante la función keybd_event se simula la presión de una tecla. ( A en el ejemplo).

Usé el evento OnKeyDown del form para verificar si la combinación Ctrl+A fué pulsada; si es así se activa o desactiva
el TTimer mediante la negación del estado anterior de la propiedad Enabled.

Un saludo.

Delfino 31-01-2011 18:57:56

El TDBNavigator tiene una cosa parecida, si se mantiene clickado algún botón se dispara continuamente la acción..

darkcuevas 31-01-2011 20:28:47

Cita:

Empezado por ecfisa (Mensaje 389429)
Hola darkcuevas.

Si copias/pegas el código que te puse y los eventos correspondientes están asignados, te aseguro que funciona.
Para visualizar el funcionamiento, usá un Edit cuyo Tab Order sea el primero.

Te explico básicamente como funcióna el código.

Cuando se crea el form, se pone la propiedad KeyPreview a verdadero haciendo que el form capture los eventos de teclado
antes que el control activo. Se desactiva el TTimer y se ajusta el intervalo con que se disparará el evento OnTimer.

Al dispararse el evento OnTimer, mediante la función keybd_event se simula la presión de una tecla. ( A en el ejemplo).

Usé el evento OnKeyDown del form para verificar si la combinación Ctrl+A fué pulsada; si es así se activa o desactiva
el TTimer mediante la negación del estado anterior de la propiedad Enabled.

Un saludo.

grax si me funciono lo que paso es que yo estaba cometiendo un error gracias (;


Cita:

Empezado por Delfino (Mensaje 389433)
El TDBNavigator tiene una cosa parecida, si se mantiene clickado algún botón se dispara continuamente la acción..

me puedes ablar algo mas de TDBNavigate porfavor

lo que pasa es que el codigo que me dio ecfisa yo lo quiero para que emule la cosntante precion de las teclas al curarme o algo asi en algun juego entonses cuando quiero que cure no cura pero si abro un blod de notas si marca las teclas corespondientes

entonses abra que aserle algun tipo de modificacion al codigo o asi o sino buscar otro codigo noc recomiendenme algo :)

ecfisa 31-01-2011 22:48:29

Hola.

Ahora entiendo. Lo que querés es hacer es algo como los auto pot que se usan en los juegos On Line.
En base el procedimiento es muy similar, la diferencia es que la tecla presionada debe ser capturada por el juego y no por el tu form. Y por tanto la forma en que envíes el mensaje, dependerá del juego que se trate. Y no te olvides que la mayoría de los juegos detecta este cheat.

Como un comienzo revisá este link: Autoclicker .

Aunque por lo que ví, se aplica al click del mouse, creo que podés sacar unas cuantas ideas.

Un saludo.

darkcuevas 31-01-2011 23:10:59

Cita:

Empezado por ecfisa (Mensaje 389472)
Hola.

Ahora entiendo. Lo que querés es hacer es algo como los auto pot que se usan en los juegos On Line.
En base el procedimiento es muy similar, la diferencia es que la tecla presionada debe ser capturada por el juego y no por el tu form. Y por tanto la forma en que envíes el mensaje, dependerá del juego que se trate. Y no te olvides que la mayoría de los juegos detecta este cheat.

Como un comienzo revisá este link: Autoclicker .

Aunque por lo que ví, se aplica al click del mouse, creo que podés sacar unas cuantas ideas.

Un saludo.

sii exacto eso es lo que quiero creo que el codigo que esta en el link ke dejaste esta exelente voy a estudiar un rato xD con eso es suficiente si tengo alguna duda pregunto :) grax...


ha una pregunta que es (then) (else) esos 2 que funcion tienen si no es mucha molestia
para que sirve esto tanbn

implementation

{$R *.dfm}

ecfisa 01-02-2011 00:57:06

Hola darkcuevas.

La sintaxis del condicional if / then /else, es muy sencilla.
Te hago un ejempo en pseudocódigo y su contraparte en código Delphi que creo que es la mejor manera de ver su funcionamiento.

Cita:

si Variable > 0 entonces
Mostrar "mayor que cero"
sino
Mostrar "menor que cero"
Código Delphi [-]
    if Variable > 0 then
      ShowMessage('mayor que cero')
    else
      ShowMessage('menor que cero');

implementation: Es una palabra reservada de Delphi que indica que se inicia la sección donde se 'implementa' (se escribe el código) de lo declarado en la sección de interface de la unidad. El código que se ubica en la sección implementation, es sólo accesible por la propia unidad.

{$R *.dfm}: Le indica a Delphi que debe enlazar los componentes visuales (form, botones, imágenes, etc) declarados en la sección interface,
esto Delphi lo almacena en un archivo con extensión .dfm.


Un saludo.

Caral 01-02-2011 01:10:29

Hola
Para ampliar un poco lo dicho por ecfisa:
Hay que tener en cuenta que antes del ELSE no hay que poner punto y coma.
Tambien hay que tomar en cuenta que si hay mas de un dato entre estos delphi solo leera el primero, para que lea todos se necesita iniciar y terminar el proceso, asi:
Código Delphi [-]
 if Variable > 0 then
      begin // comienza
      Variable := 2;  // primer dato
      ShowMessage('La variable es 2'); // segundo dato, con punto y coma
      end  // termina sin punto y coma
    else
    Begin 
      Variable := 1;
      ShowMessage('La variable es 1');
end; // final
Saludos

darkcuevas 01-02-2011 03:19:25

bueno ya entiendo gracias por toda su ayuda :)

Assassins9797 22-05-2012 19:12:56

Lo de activar y desactivar con Control+A no era a lo que me refería.Me refiero a que al clickear un Button el button esté presionado hacia abajo,y cuando clickees en alguna parte de la pantalla el button se ponga normal y de clicks donde habías clickando antes (el guardado de las Coordenadas).E encontrado un video donde sale el Autoclicker Pillin en un juego llamado Boombang

Youtube : como usar autoclick pillin (No puedo poner el link)

Hay teneis el Autoclicker.Me gustaría crearlo exactamente como ese,salvo los texboxt.Es decir,Un button,un trackbar y la funcion del Button como el Pillin.El problema es que no encuentro el código.Si alguien me lo da,estaría muy agradecido.


La franja horaria es GMT +2. Ahora son las 09:30:24.

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