[Ayuda] Timer y..

Iniciado por jorgelin95, 16 Septiembre 2010, 02:45 AM

0 Miembros y 3 Visitantes están viendo este tema.

BlackZeroX


@IsCharAlpha
@IsCharAlphaNumeric

Para detectar ê,ñ, ....

@SetWindowsHookEx
@UnhookWindowsHookEx
@CallNextHookEx

@WH_KEYBOARD

Para que no se use un Timer y asi no se escapa nada, ni usa demasiado el procesador

@GetAsyncKeyState
estaria bien lo malo que se tiene que usar un timer a un intervalo muy bajo (como a 100 ms como minimo)

Dulces Lunas!¡.
The Dark Shadow is my passion.

bizco

Si es por tema de consumo, la propia documentaicon desaconseja el uso de hooks ya que relentizan quieras o no y por una tecla y para lo que es, no creo que necesite alta precision. de normal nunca sabras si hay 15 o 3  hooks en cola, y son llamados uno despues del otro relentizando quieras o no el sistema.

CitarHooks tend to slow down the system because they increase the amount of processing the system must perform for each message. You should install a hook only when necessary, and remove it as soon as possible.


BlackZeroX

#12
@ctlon

Te lo tomas muy personal xP, solo son Octativas, y en lo que yo prefiero mejor que se vea relentisado X casos a tener un Timer que s ele escape algo... si prefiero relentizar y presisionar lo que deseo!¡.

Agregando:

Me referia al % en uso constante del procesador mas no al relentisamiento del Sistema Operativa, ya que si es un timer SIEMPRE va estar checando y un Hook solo saltara en el momento justo, y vamos para un hook al teclado solo saltara cada vez que se oprima una tecla es decir a la velocidad que OPRIME UNA PERSONA  y a la velocidad de 100 ms de un timer, sin contar los intervalos de tiempo entre cada unos... Mejor el Hook.

Asi que por mi punto de vista el Hook es la mejor opcion en estos casos donde tiene que intervenir una persona, o cuestiones de intercepccion en el momento JUSTO y DESEADO, el timer seria como que para otra cosa!¡.

Dulces Lunas!¡.
The Dark Shadow is my passion.

bizco

CitarTe lo tomas muy personal

para nada, ¿donde ves lo personal?

CitarMe referia al % en uso constante del procesador mas no al relentisamiento del Sistema Operativa, ya que si es un timer SIEMPRE va estar checando y un Hook solo saltara en el momento justo, y vamos para un hook al teclado solo saltara cada vez que se oprima una tecla es decir a la velocidad que OPRIME UNA PERSONA  y a la velocidad de 100 ms de un timer, sin contar los intervalos de tiempo entre cada unos... Mejor el Hook.

el % constante del procesador se da igual internamente, que tu aplicacion no reccione o no sea la tecla que espera tu aplicacion el sistema notifica del mismo modo a cada hook. hook chain en google y veras que internamente hay consumo y mas cosas.

y mas en el caso concreto que lo quiere para un juego donde estara presionando activamente las teclas, activando continuamente el evento de teclado. en mi opinion repito, para una sola tecla con la funcion anterior sobra. si buscase seriamente rendimiento, descartaria vb y con una simple dll subclasificando la ventana principal del juego obtendria mas rendimiento que de cualquiera de estas 2 formas, pero eso ya tiene que ver el si le interesa o no.

BlackZeroX

#14
.
xD, bueno al caso yo me quedo con el Hook ya que solo activaria el Proceso X en el mensaje deseado (Incluso si se virtualiza el teclado pero este noe s el caso), y pues el timer estaria constantemente verificando X tiempo con GetAsyncKeyState ...

Modifico:
@jorgelin95

* Ya tienes alternativas, deside cual es la que deseeas y se ajusta a lo que quieres.
* Como ves cada quien tiene sus por que y para que, solo es cuestion del par aque lo quieres-

Dulces Lunas!¡.
The Dark Shadow is my passion.

bizco

CitarxD, bueno al caso yo me quedo con el Hook ya que solo activaria el Proceso X en el mensaje deseado

en el mensaje no, notificaria a cada hook por cada tecla pulsada sea cual sea su intervalo y en un juego es frecuente el uso del teclado.

esta claro, cada cual lo ve a su modo pero no hay que llevarse a engaño pensando que el hook solo consume cuando nosotros guardamos la pulsacion.

BlackZeroX

#16
.
lo que quiero decir es que por ejemplo
Yo lo veo de esta forma... al Hook (Sencillo No hago ningun Hook solo es un ejemplo de mas o menos como vea a un Timer con respecto a un Hook)

Código (vb) [Seleccionar]


Declare Function WaitMessage Lib "user32" () As Long
Sub main()  ' No se nos escapara nada... almenos que el proceso involucrado _
corra en el mismo hilo y sea demasiado tardado... La solucion un nuevo _
Hilo o algun "semaforo" para evitar la duplicidad de un proceso que se repita _
demasiadas veces de las nesesarias O crearlo con un nuevo Hilo (No se recomienda esto en VB6... Inestable).
   Do
       DoEvents
       WaitMessage
   Loop
End Sub



a

Código (vb) [Seleccionar]


Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub main() ' En el transcurso de los 100 Milisegundos se escapan quien _
sabe cuantas cosas... ademas de que traba constantemente y en ocasiones sin razon alguna
   Do
       DoEvents
       Sleep 100
   Loop
End Sub



Cual es mas factible? esperar el mensaje (Waitmessage() simulando a un Hook...) y realizar la accion o usar un Sleep (Simulando un Timer...)...

Dulces Lunas!¡.
The Dark Shadow is my passion.

BlackZeroX

por cierto donde dijo que era para un juego nunca lo vi (tal vez ni me percate)

a por cierto los dos ejemplos anteriores son solo ejemplo en el Hilo Actual (Sleep) y Waitmessage solo apra los mensajes locales, y solo representan a lo que tengo entenido en una forma facil de comprender mi objetivo primordial del por que elijiria un hook xP

Dulces Lunas!¡.
The Dark Shadow is my passion.

bizco

#18
depende el caso, seria mas factible uno que otro. pero sin lugar a dudas, en un sistema que tiene ya en la cola 30 hooks del mismo tipo (por poner un ejemplo)  pues tendria que verse, nunca podria dar el mismo resultado ya que seria variable el numero de hooks existentes dependiendo que aplicaciones este ejecutando. yo no hablo del codigo en concreto dentro de la aplicacion si no el consumo que puede producir el uso inadecuado o excesivo de hooks.

CitarYo el otro día descargue un programa lo cual su función era apretar 'space' es decir lo pobre en un juego para saltar (CS) y funciono, entonces yo mantenía apretado 'space' y saltabas varias veces, sin este programa solo salta 1 vez. La cuestión es que yo quería hacer esto pero con otra tecla en mi caso "V"

si, tu puedes verlo como quieras, pero no te asegura en ningun caso un menor consumo de cpu ya que dependiendo cuanto este de cargado el sistema igual hay un rendimiento menor.


Sencillamente para una tecla tener que hacer que el sistema recorra una lista N elementos a cada pulsacion de teclado tampoco creo que tenga gran diferencia con la otra forma.

BlackZeroX

#19
The Dark Shadow is my passion.