PDA

Ver la Versión Completa : Como Crear Programa Que Pulse Una Tecla Continuamente?


darkcuevas
30-01-2011, 04:54:54
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 )

...
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 Notevi
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
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 Notevi
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 Notevi
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 Notevi
30-01-2011, 16:45:14
no nada :(

¿No nada,? ¡qué!, te recomiendo que leas nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php), 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


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 (http://msdn.microsoft.com/en-us/library/ms646304%28v=vs.85%29.aspx) 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
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 (http://msdn.microsoft.com/en-us/library/ms646304%28v=vs.85%29.aspx) 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 (;


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 (http://www.mpgh.net/forum/161-tutorials/46770-delphi-tut-autoclicker-games-gameguard.html).

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
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 (http://www.mpgh.net/forum/161-tutorials/46770-delphi-tut-autoclicker-games-gameguard.html).

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.


si Variable > 0 entonces
Mostrar "mayor que cero"
sino
Mostrar "menor que cero"



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:

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.

Casimiro Notevi
22-05-2012, 19:27:31
Por favor, sigue nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php), ya sabemos que eres nuevo aquí, pero date cuenta que este hilo no tiene nada que ver contigo.

Assassins9797
22-05-2012, 19:31:03
Un moderador me movio el mensaje y me envió a este apartado. :S

Casimiro Notevi
22-05-2012, 19:55:13
Un moderador me movio el mensaje y me envió a este apartado. :S

Creo que estás confundido, en este hilo no hay ningún mensaje tuyo, tú has creado este otro (http://www.clubdelphi.com/foros/showthread.php?t=78877) y de momento no ha contestado nadie.
Si necesitas añadir algo más, poner aclaraciones, etc. entonces puedes hacerlo en el mismo hilo que has creado.
Le das a "responder" y vuelves a escribir otro post (mensaje), pero en el hilo ese que has iniciado (http://www.clubdelphi.com/foros/showthread.php?t=78877), no en cualquier otro.
Venga, verás como pronto obtienes respuestas que te van a servir.
Y bienvenido :)