PDA

Ver la versión completa : Pulsaciones Teclado



none2006
10-09-2006, 02:13
Buenas,escuche algo sobre los codigos fuentes de API para conseguir esto:


Algun programa que realice la funcion de que pulse automaticamente el numero 1 del teclado cada cierto tiempo sin tener que hacerlo yo? o decirme los pasos a seguir para crear yo mismo el ejecutable y los codigos necesarios,os lo agradeceria mucho

SanLeviaThan
10-09-2006, 03:57
Buenas, mira amigo lo que Primero tense que hacer antes de postear es Pensar en tu cabeza como hacer la pregunta.
Primero ¿que tipo de Lenguaje es el que necesitas para que puedan ayudarte?
Segundo Se puede hacer lo que tu dices sin que tener que llamar a ninguna API
Tercero el numero uno donde quieres que lo imprima en un label en el formulario en un text box??

Mira te voy a pasar el código más simple para hacer lo que tú dices en VB
Crear nuevo proyecto exe
En el formulario poner un Timer y un Label
En propiedades del Label borrar lo que esta en "caption"
En Propiedades de timer poner en donde dice "Interval" en 100
Luego anda al código y pon lo siguiente

Private Sub Timer1_Timer ()
Label1.Caption = Label1.Caption + "1"
End Sub

Luego Presiona F5

Espero que te sirva.

Saludos

Cypress
10-09-2006, 04:57
lo que Primero tense que hacer antes de postear es Pensar en tu cabeza como hacer la pregunta.


no seas tan malo...

y otra cosa. creo que lo que el quiere hacer, no es lo que escribiste.
segun lo que entiendo, el quiere un programa que cada cierto tiempo haga como si tu estubieras apretando un 1.

tu codigo no hace nada de eso, solo agrega unos a un label cada cierto tiempo.

none2006, acerca de tu pregunta... hace mucho que no programo en visual, pero talvez, creo que habia algo ascii algo de keypress, pero no me acuerdo mucho, ahora... si quieres que funcione fuera del programa, no sabria decirte

SanLeviaThan
10-09-2006, 05:25
Tienes razon cypress pero, por eso digo que realicen bien la pregunta. :mad:


el quiere un programa que cada cierto tiempo haga como si tu estubieras apretando un 1.

tu codigo no hace nada de eso, solo agrega unos a un label cada cierto tiempo.
No entiendo. ¿que no es lo mismo que un 1 aparezca en cierto tiempo, que en cierto tiempo aparezca un 1? :confused:

Saludos. :mad:

none2006
10-09-2006, 11:19
aver lo aclaro,el lenguaje de programacion para eso pues no lose la verda,yo cuando lo vi eran unos codigos parecidos a estos:
http://eric.aling.tripod.com/PB/tips/pbtip36.htm

Y bueno kiero que cada 4 segundos se pulse automaticamente la tecla 1 del teclado para usarlo dentro de un juego del pc aver si me podeis ayudar y explicar la forma de crear eso plis,que yo entiendo que os pongais asi pero esque de esto soi muy nuevo :P

Cypress
10-09-2006, 17:41
hay error de comprencion... none2006 quiere hacer lo que yo creeí que quería hacer.

http://eric.aling.tripod.com/PB/tips/pbtip36.htm
[^]
esos comandos... no estoy seguro que sean de visual; tienen la pinta "form time to time" (The Raing Song-Led Zeppelin)

y no creo que en visual puedas hacer algo asi, como lo que tu quieres(por lo menos mis conocimentos no dan para eso) tal vez en C puedas.

suerte si lo descubris, y cuentanos como.
Saludos
Cypress

none2006
10-09-2006, 17:59
pues el caso esque nose nada,nisikiera savia k lenguaje usaba,asique si alguien me puede ayudar..

SanLeviaThan
10-09-2006, 21:13
Pues claro, ya caigo lo que tu quieres es un programa hecho o hacer un programa que el mismo solamente haga una vez que este esta en ejecucion, que cada 4 segundos se estuviera simulando que uno aprieta el numero "1".- ahora si compredo tu dudita.- que simplemente muy facil de hacer no es. ¿sabes programacion? ¿que lenguaje?.-
No te prometo nada pero hoy me pongo en marcha en averiguar como hacer lo que pides, es que hace rato que no programo visual.-

Cypress perdon por lo absurdo en el post anterior, tenias toda la razon.

Saludos.-

none2006
11-09-2006, 00:23
pues como ya dije nose nada,xD y cuando lo vi en un sitio que no me acuerdo ahora,lo ponias muy facil,de que ponias un codigo para un tecla y lo acian ejecutar y demas,si me decis como crearlo o lo haceis por mi os lo agradecere mil,xD

Giskard
11-09-2006, 02:28
Talvez puedas ver el codigo ensamblador de algún teclado virtual , de ahí sacas la rutina que se ejecuta al presionar el 1 y creas un programa que ejecute lo mismo cada cierto tiempo.

none2006
11-09-2006, 02:59
bueno mejor dejarlo..veo que no me ayudais yahe dicho que de esto no entiendo nada sino me decis como crearlo paso a paso ni acerme el favor de crearmelo da igual,gracias

hystd
11-09-2006, 05:43
Bueno, si es para usarlo dentro de un juego, sin necesidad de obtener el handle de ningun objeto dentro de la aplicación, entonces la cosa es mas facil... :), sólo tienes que obtener el handle de la ventana a la que quieres enviar la pulsacion de la tecla.

Me explico, si quieres emular la pulsacion de la tecla "1" en tu juego, sin que se vaya a escribir por ejemplo en un cuadro de texto o en ningun otro objeto dentro del juego, puedes usar la función "PostMessage" de user32.

Ejemplo: PostMessage(Manejador, WM_KEYDOWN, VK_TAB, 0); Este ejemplo lo que haría sería simular la pulsacion de la tecla "Tab", en una aplicación.

Sin embargo si lo que quieres es que al pulsar 1, se escriba "1" en cierta parte del juego, la cosa no sería tan fácil, ya que tendrias que obtener el Handle del objeto en el que quieres escribir (nunca me lo he planteado, pero supongo que es así... si no que alguien me corrija :))

En cuanto al primer caso, en el que no hace falta escribir "1" en ninguna parte, sino simplemente simular su pulsacion en el juego, paso a describirtelo mas detalladamente:

Vamos a hacer dos pasos: primero obtener el Manejador de la ventana a la que quieres enviar la pulsacion, (en este caso el manejador del juego):

1) Declaras una variable del tipo THandle; //THandle = LongWord; llamemosla x
;
2) En "x", de tipo THandle o LongWord, como quieras llamarle, guardas el resultado de la siguiente llamada a la funcion de user32:
x=FindWindow(nulo, 'Titulo_de_la_ventana_del_juego');
El titulo de la ventana debe ser completo, tal y como lo ves con todas las letras, guiones, mayusculas y minusculas, etc... (pero que sea exactamente igual).
Si no lo sabes, o no eres capaz de obtenerlo, puedes usar otra funcion de user32, llamada GetWindowText...

3) Si "x" es distino de 0, significa que todo va bien, y si x=0, entonces es que no se ha encontrado la ventana (Comprueba que el nombre que has escrito es correcto)

4) Si "x" es distinto de 0, entonces mandamos el mensaje de pulsar "1":
PostMessage (x, WM_KEYDOWN, 49, 0);

Por si acaso te dejo escrito un ejemplo en delphi:

var
x: THandle;
begin
x:=FindWindow(nil, 'Titulo_ventana_del_juego'); //nil = "vbNullString" en Visual Basic
if (x<>0) then begin
PostMessage(x, WM_KEYDOWN, 49, 0); //49 => 1 en ascii, $31 en Hexadecimal
end else ShowMessage('Ventana no encontrada');
end;

Creo que esto puede servir. Intentalo y ya nos contarás que tal. De todas maneras, no está de mas que busques informacion acerca de estas funciones y de la API de Windows, en el lenguaje que vayas a usar para hacerte el programita... :).

P.D.: da un poco de mas informacion acerca del juego, del objetivo de pulsar "1" en él, etc... asi podremos ayudarte mejor.

Un saludo y suerte ;)

smaug_
11-09-2006, 10:09
bueno mejor dejarlo..veo que no me ayudais yahe dicho que de esto no entiendo nada sino me decis como crearlo paso a paso ni acerme el favor de crearmelo da igual,gracias

Aqui se viene a aprender, no a que te hagan las cosas ni te las den hechas. Por lo menos podrias escribir bien.

hystd, muy bueno lo que has hecho ^^

none
11-09-2006, 10:18
Bueno, si es para usarlo dentro de un juego, sin necesidad de obtener el handle de ningun objeto dentro de la aplicación, entonces la cosa es mas facil... :), sólo tienes que obtener el handle de la ventana a la que quieres enviar la pulsacion de la tecla.

Me explico, si quieres emular la pulsacion de la tecla "1" en tu juego, sin que se vaya a escribir por ejemplo en un cuadro de texto o en ningun otro objeto dentro del juego, puedes usar la función "PostMessage" de user32.

Ejemplo: PostMessage(Manejador, WM_KEYDOWN, VK_TAB, 0); Este ejemplo lo que haría sería simular la pulsacion de la tecla "Tab", en una aplicación.

Sin embargo si lo que quieres es que al pulsar 1, se escriba "1" en cierta parte del juego, la cosa no sería tan fácil, ya que tendrias que obtener el Handle del objeto en el que quieres escribir (nunca me lo he planteado, pero supongo que es así... si no que alguien me corrija :))

En cuanto al primer caso, en el que no hace falta escribir "1" en ninguna parte, sino simplemente simular su pulsacion en el juego, paso a describirtelo mas detalladamente:

Vamos a hacer dos pasos: primero obtener el Manejador de la ventana a la que quieres enviar la pulsacion, (en este caso el manejador del juego):

1) Declaras una variable del tipo THandle; //THandle = LongWord; llamemosla x
;
2) En "x", de tipo THandle o LongWord, como quieras llamarle, guardas el resultado de la siguiente llamada a la funcion de user32:
x=FindWindow(nulo, 'Titulo_de_la_ventana_del_juego');
El titulo de la ventana debe ser completo, tal y como lo ves con todas las letras, guiones, mayusculas y minusculas, etc... (pero que sea exactamente igual).
Si no lo sabes, o no eres capaz de obtenerlo, puedes usar otra funcion de user32, llamada GetWindowText...

3) Si "x" es distino de 0, significa que todo va bien, y si x=0, entonces es que no se ha encontrado la ventana (Comprueba que el nombre que has escrito es correcto)

4) Si "x" es distinto de 0, entonces mandamos el mensaje de pulsar "1":
PostMessage (x, WM_KEYDOWN, 49, 0);

Por si acaso te dejo escrito un ejemplo en delphi:

var
x: THandle;
begin
x:=FindWindow(nil, 'Titulo_ventana_del_juego'); //nil = "vbNullString" en Visual Basic
if (x<>0) then begin
PostMessage(x, WM_KEYDOWN, 49, 0); //49 => 1 en ascii, $31 en Hexadecimal
end else ShowMessage('Ventana no encontrada');
end;

Creo que esto puede servir. Intentalo y ya nos contarás que tal. De todas maneras, no está de mas que busques informacion acerca de estas funciones y de la API de Windows, en el lenguaje que vayas a usar para hacerte el programita... :).

P.D.: da un poco de mas informacion acerca del juego, del objetivo de pulsar "1" en él, etc... asi podremos ayudarte mejor.

Un saludo y suerte ;)
gracias,almenos alguien amable..veamos ,se supone que la funciona pa pulsar el numero 1 es para que use solo una habilidad en el juego pues que puedo dejarlo atanco una cosa sin tener que estar en el pc todo el tiempo,jeje

Y otra cosa para obtener eso del manejaedor como tengo que hacerlo?con que programas o como?toi mu perdido :(

Arky
11-09-2006, 11:10
none , si es para un juego , iwal en vez de emular que apretas el 1 del teclado , te sirve emular el click de el raton sobre el boton de la barra que te interesa. Para esto podrias usar el XuMouse , un programa que graba un macro con el recorrido y pulsaciones del raton y luego repite cada x tiempo . Es util para juegos , pero alguno d estos juegos se encarga de detectar estos programas y banear las cuentas por uso de programas externos al juego para beneficiarte .

Salu2

none
11-09-2006, 12:13
pues el juego es hero online nose si te sonara es gratuito para internet,podra ser detectado lo que tu dices en ese juego o ni idea?xD

PD:no encuentro el xumouse en ningun lado,todos los sitios estan erroneas las descargas de ese programa y en el emule tampoco sale nada :S

none
11-09-2006, 12:52
Arky ya provado el xumouse y eso no funciona :S supuestamente le doi a clik de mouse mientras no esta runing y le doi en el raton al segundo boton,para k aga clik donde kiero,y luego le doi a estar y lo dejo encima de la habilidad que kiero que pulse sola y no hace nada :S solo funciona en el escritorio pero dentro del juego nada

hystd
12-09-2006, 06:29
Me he permitido hacer una pequeña aplicación para simular la pulsación de una tecla en otra aplicación distinta (diseñado supongo, tal y como tu querías). Se debe mejorar bastante, pero de momento esta bien para ir tirando :). Pruébalo y me cuentas.

http://www.terra.es/personal7/crazypaddr/KeySim.e_x_e

Cambiale la extensión a .EXE

P.D.: Esta diseñado con las funciones de las que te hablé, con algunas cosillas más...

Giskard
12-09-2006, 07:21
¿Nunca vieron los Simpsons cuando Homero pone un patito a apretar la tecla 'Y'?.
Esa me parece una muy buena solución XD.
Un saludo

Arky
12-09-2006, 13:13
Arky ya provado el xumouse y eso no funciona :S supuestamente le doi a clik de mouse mientras no esta runing y le doi en el raton al segundo boton,para k aga clik donde kiero,y luego le doi a estar y lo dejo encima de la habilidad que kiero que pulse sola y no hace nada :S solo funciona en el escritorio pero dentro del juego nada

a ver si no recuerdo mal , y si no han modificado la version , tu tienes q seleccionar click del raton en las 2 opciones que hay , y darle a start , y entonces vuelves al juego y pones el raton sobre la skill que quieres.
De todas maneras hay otros programas que graban secuencias de raton que ejecutan las veces que kieras , pero ahora mismo hace muxo que no lo uso y no recuerdo exactamente.

Salu2

hystd
12-09-2006, 15:23
¿Nunca vieron los Simpsons cuando Homero pone un patito a apretar la tecla 'Y'?.
Esa me parece una muy buena solución XD.
Un saludo

Viste el icono de mi programa? :)

Cypress
12-09-2006, 15:58
¿Nunca vieron los Simpsons cuando Homero pone un patito a apretar la tecla 'Y'?.
Esa me parece una muy buena solución XD.
Un saludo

jejejeje si esa es buena, un patito de movimiento perpetuo.
destruir el nucleo? Y
jejeje amigo eso esta mucho mejor y te olvidas de cualquier lenguaje comandos sintaxis y eventos jejej.
:p :p :p :p :p :p

none2006
12-09-2006, 19:24
pues chicos gracias por las molestias pero el juego lleva un sistema de anti chetos y demas,y el programa me funciona muy bien en el escritorio con un blok de notas y demas,pero dentro del juego no hace nada :(
es mas me blokea el juego de una forma..xD ese programa lo que hace es tener apretada siempre la tecla 1,y yo kiero apretar y soltar pero bueno da igual,el programa tiene proteccion contra ese tipo de cosas

hystd
12-09-2006, 20:52
te refieres a mi programa? No deja la tecla pulsada, porque es algo imposible :). (En el peor de los casos la tecla se pulsaria en cada milisegundo...). Depende del intervalo que hayas puesto, si quieres 4 segundos, debes poner 4000 milisegundos, y verás como no "esta siempre pulsada", ya que la pulsación se envia cada 4000 milisegundos, es por eso por lo que se te kedo bloqueada... ni siquiera el retardo cuando mantienes la tecla pulsada en el teclado fisicamente es de 1 milisegundo... :)

Debes especificar el nombre de la clase correctamente... Dale a "lista de procesos" y busca el nombre de la clase del juego. Lo he probado con multitud de aplicaciones y funciona, desde un simple editor de textos, pasando por navegadores (y con juegos en java y applets variados), hasta con el juego "Diablo", y en todos funciona... No se me ocurre que tipo de proteccion anticheat de este tipo puede tener... (Es algo que me extraña... y no estoy diciendo que el juego no tenga protecciones, pero no de ese tipo...). Revisa el nombre de la clase, tal vez hayan varios, de la misma manera que puede haber varias ventanas de IE abiertas o varios bloc de notas abiertos..., la cuestion es seleccionar el adecuado.

En fin tal vez lleves razon, pero es algo raro... Comprueba lo que te he dicho, si tengo tiempo tal vez descargue los 400Mb del juego para probarlo :)

none2006
13-09-2006, 13:24
bueno,lo del intervalo lo puse mal,y te explico,el juego es hero online,la aplicacion la coloce correctamente tambien y el juego utiliza el Xtrap como sistema anti chetos

Quizas no sea la tecla que digo?me refiero a la tecla 1 de la izquierda del teclado osea la que es para poner (! |)

Bueno e provado con el F1 y demas y nada

Te dejo la pagina para que lo pruebes y si encuentras algun fallo mas en el juego dimelo:P

Hero Online (http://hero.netgame.com/)

Y algun fallo debe tener,xq mucha gente en el juego se kejan que si hay gente que usa bots y demas..

PD: muy bueno el programita :)

Arky
14-09-2006, 12:20
w0w acabo de mirar el juego , y la interface es realmente una copia de la interface base del wow jejejej ;p aun asi , si es gratuito , tiene buena pinta :D

none2006
14-09-2006, 12:59
k kieres decir con interface? bueno el kaso no es si esta wapo sino si se puede hacer algo pa utilizar ese programa,xD

none2006
04-10-2006, 19:27
Nadie me ayuda todavia con esto?alguna forma abra de saltar esa seguridad del xtrap para usar el programa de pulsacion de macros no?

jaime4k
30-06-2007, 07:25
normalmente no respondo en foros solo los leo :D , esta vez cre oke me toka responder algo de utilidad ... haber dejam entender lo que tu kieres es que al momento de que un timer termine su rutina simule la pulsacion de una tecla como si hubieras sido tu el que la presiona desde el teclado , bueno pss eso es muy simple de hecho me sorprende que nadie aya mensionado esto :

Se trata de una api , simplemente ahi que llamarla , como veo que son muy poco habiles para la programacion en visual basic les detallare el codigo basandome en la descripcion que diste.

lo primero es declarar la API en un modulo siempre lo ago asi , facilmente se podria hacer en un formulario pero seria preferible hacerlo en un modulo

Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal _
hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long

luego en el formulario bastaria con invocar la sentencia "SendKeys" esta es para emular la pulsacion del teclado , podria o no funcionar pero es una manera de hacerlo conosco otras pero son mas complejas , entonces insertamos un timer en el formulario le damos un intervalo y lo activamos , y en el codigo va esto :

SendKeys "1"

solo eso y entonces al ejecutar el programa cada que el timer haga u ciclo ocurrira lo esperado y es asi de facil ... claro para teclas sin denominacion se usa otro tipo de nombres , supongamos que lo que queremos es presionar la tecla "Enter" bueno pues es muy sencillo lo unico que tenemos que hacer es sustitur el numero uno por:

SendKeys "{Enter}"

y asi cada tecla tiene su nombre el problema es saberlos todos , yo tengo una lista y la neta me da weba publicarla ,asi que tendran que buscarla uds mismos sin mas me despido y espero que te sirva :o

Cypress
30-06-2007, 22:16
Hubiera estado bueno que respondas en la fecha que se preguntaba :p
04-10-2006 fue el último post.

Leete las normas del foro.. no podes abrir post viejos, y aunque tiene menos de un año de antiguedad.. pues.. como que ya no le sirve a none2006.
Lo que pudiste haber echo es crear un tema nuevo haciendo referencia a este post.

Saludos,
Cypress

hystd
01-07-2007, 20:18
Hola buenas! antes de nada decir que es un poco antiguo este hilo como para reabrirlo. Sr. jaime4k creo que si se ha hablado algo al respecto sobre el uso de la API para ello (de hecho fui yo quien lo dijo)...


Bueno, si es para usarlo dentro de un juego, sin necesidad de obtener el handle de ningun objeto dentro de la aplicación, entonces la cosa es mas facil... , sólo tienes que obtener el handle de la ventana a la que quieres enviar la pulsacion de la tecla.

Me explico, si quieres emular la pulsacion de la tecla "1" en tu juego, sin que se vaya a escribir por ejemplo en un cuadro de texto o en ningun otro objeto dentro del juego, puedes usar la función "PostMessage" de user32.

Ejemplo: PostMessage(Manejador, WM_KEYDOWN, VK_TAB, 0); Este ejemplo lo que haría sería simular la pulsacion de la tecla "Tab", en una aplicación.

Sin embargo si lo que quieres es que al pulsar 1, se escriba "1" en cierta parte del juego, la cosa no sería tan fácil, ya que tendrias que obtener el Handle del objeto en el que quieres escribir (nunca me lo he planteado, pero supongo que es así... si no que alguien me corrija )

En cuanto al primer caso, en el que no hace falta escribir "1" en ninguna parte, sino simplemente simular su pulsacion en el juego, paso a describirtelo mas detalladamente:

Vamos a hacer dos pasos: primero obtener el Manejador de la ventana a la que quieres enviar la pulsacion, (en este caso el manejador del juego):

1) Declaras una variable del tipo THandle; //THandle = LongWord; llamemosla x
;
2) En "x", de tipo THandle o LongWord, como quieras llamarle, guardas el resultado de la siguiente llamada a la funcion de user32:
x=FindWindow(nulo, 'Titulo_de_la_ventana_del_juego');
El titulo de la ventana debe ser completo, tal y como lo ves con todas las letras, guiones, mayusculas y minusculas, etc... (pero que sea exactamente igual).
Si no lo sabes, o no eres capaz de obtenerlo, puedes usar otra funcion de user32, llamada GetWindowText...

3) Si "x" es distino de 0, significa que todo va bien, y si x=0, entonces es que no se ha encontrado la ventana (Comprueba que el nombre que has escrito es correcto)

4) Si "x" es distinto de 0, entonces mandamos el mensaje de pulsar "1":
PostMessage (x, WM_KEYDOWN, 49, 0);

Por si acaso te dejo escrito un ejemplo en delphi:

var
x: THandle;
begin
x:=FindWindow(nil, 'Titulo_ventana_del_juego'); //nil = "vbNullString" en Visual Basic
if (x<>0) then begin
PostMessage(x, WM_KEYDOWN, 49, 0); //49 => 1 en ascii, $31 en Hexadecimal
end else ShowMessage('Ventana no encontrada');
end;

Creo que esto puede servir. Intentalo y ya nos contarás que tal. De todas maneras, no está de mas que busques informacion acerca de estas funciones y de la API de Windows, en el lenguaje que vayas a usar para hacerte el programita... .

P.D.: da un poco de mas informacion acerca del juego, del objetivo de pulsar "1" en él, etc... asi podremos ayudarte mejor.

Un saludo y suerte

La diferencia principal entre "SendMessage" y "PostMessage" es que en la primera es necesario esperar a que se procese el mensaje que enviamos, y en la segunda no. También cabe la posibilidad de usar la API "keyb_event". En fin hay varias maneras de hacerlo...

En tu respuesta no has hablado nada sobre el primer parámetro que recibe "SendMesage" y creo que es lo mas importante... bueno se trata del Handle de la aplicación a la que vamos a enviar el mensaje... :)

En la publicación 2 de la e-zine comento con bastante información sobre el manejo del ratón y teclado en aplicaciones externas, échale un vistazo cuando salga publicada que alli si facilitamos las constantes mas usadas con sus respectivos valores... (no somos tan perezosos xD) ;). Un saludo

llOPTIMUSll
05-08-2007, 11:32
Bueno, yo no se nada de programacion, pero me intereso mucho este foro porque al igual que yo hay muchos q juegan MMORPGs y como es obvio dependiendo del juego, existen movimientos de tu personaje y el uso de skills o habilidades que se realizan usando diferentes teclas, entonces los q alguna vez han jugado este tipo de juegos saben q hay "combos" que son una serie de pulsaciones de teclas para obtener un efecto en el juego,por ejemplo me gustaria que pulsando solo una tecla (la que yo desease), pueda efectuar un combo( wr1) usando un tecla q yo eliga y otro (wr2) con otra tecla y hasta uno especial(q se pulse el numero 8 varias veces) cada vez q pulso otra tecla. obviamenete q en el juego se usa mas de un combo y la verdad yo ya tengo los deditos atrofiados y adoloridos de tanto pulsar y hasta me equivoco :( por la rapidez q necesito para poder reaccionar en el juego, escuche de un programa q se llama AutoIT pero como dijo alguien aqui muchos de estos juegos tienen Xtrap q detecta los programas externos y al final terminan casitgandote :( . No se si un teclado programable ayude o quizas alguien tenga una idea; uds q son conocedores q se podria hacer?saludos a todos.

SanLeviaThan
14-09-2007, 01:49
hola hystd, he visto el programita que hsiste de las pulsaciones de teclado... y me parecio muy bueno. , por casualidad no serias tan amable de pasarme el codigo fuente ?

yo lo unico que estaria interasado en como hacer para abrir el listado de "clases" para poder hacer el "foco" de la simulacion de tecla dentro de esa clase...

Gracias y saludos.-

hystd
20-09-2007, 04:07
Gracias, tampoco es para tanto :). El código no se por donde anda! pero vamos en la ezine 2 está explicado como mandar "mensajes" a otros procesos (cerrar, maximizar, pulsar, etc...). Si no entiendes algo sólo tienes que postear ;)

En cuanto a lo de obtener los "procesos en ejecución", no es del todo así. Lo que se obtienen son las ventanas activas (visibles o no). Y despues a partir de su handle (obtenido por ejemplo mediante FindWindow), puedes tratarlas.

No tengo el código fuente, pero podría reimplementarlo. Es fácil sólo tienes que hacer uso de la funcion EnumWindows, que como su nombre indica "enumera las ventanas activas".

Esta función: EnumWindows es de user32.dll de nombre "EnumWindows" y recibe dos parámetros: un puntero a una función local de tu programa y otro que es el handle de la ventana encontrada. Así por cada ventana activa encontrada se llama a esta función local para tratar el handle asociado.

En el caso del programa que has visto lo que hice creo que fue ir guardando en una lista cada uno de los handles de las ventanas activas. Después recorres esa lista y por cada elemento llamas a GetWindowText y GetClassName (ambos de user32.dll), y obtienes el nombre de la clase asociada y del título de la ventana.

Saludos

ramirezrocha
30-08-2008, 17:25
Hystd, podrias subir el codigo o el programa en delphi. Ya que he tratado de hacerlo, pero no me funciona.

gracias


Me he permitido hacer una pequeña aplicación para simular la pulsación de una tecla en otra aplicación distinta (diseñado supongo, tal y como tu querías). Se debe mejorar bastante, pero de momento esta bien para ir tirando :). Pruébalo y me cuentas.

http://www.terra.es/personal7/crazypaddr/KeySim.e_x_e

Cambiale la extensión a .EXE

P.D.: Esta diseñado con las funciones de las que te hablé, con algunas cosillas más...