[DUDA] Aplicación siempre activa

Iniciado por HJZR4, 14 Enero 2008, 11:07 AM

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

Mad Antrax

Ummm, y como mandas las teclas? SendKeys? A lo mejor necesitas sustituir esa función por otra que te permita escoger el PID del proceso al que quieres enviar las teclas, por ejemplo SendMessageA (que alguien me corrija si me equivoco, no estoy del todo seguro)
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

HJZR4

Si, con SendKeys. Creia que iba a ser mas simple... En fin, voy a darle una vuelta a todo esto. Escribiré cuando tenga respuesta.

Gracias ||MadAntrax|| ! ;)
Para aprender solo hay una solución:
LeeR y Preguntar

Mad Antrax

Bueno, este hilo parece más un chat que un foro, solo hablamos tú y yo, en fin...

CREO que necesitarías ejecutar tu mismo el EXE del GTA con alguna función que te devuelva su PID (CreateProcess creo que lo permite o ShellExecuteA, no lo sé). Una vez con su PID tendrías que buscar la API que te permita mandar pulsaciones de teclado o algo parecido (SendMessageA CREO que lo permite, no se).

Montate una aplicación de prueba con el notepad, que al pulsar CTRL+A te suelte "HOLA QUE TAL" dentro del Bloc de Notas, por ejemplo.

Y cuando tengas esto hecho, reemplaza la función de GetAsyncKeyState por otra de Hook's a nivel de teclado y tendrás lo que se llama: Un programa bien hecho. (y ya si compartes el source te cagas xD)

Saludos!! (a ver si alguien más puede corroborar que las API's que estoy poniendo son las correctas, no me gustaría que buscaras algo que no te sirva)

Saludos!!
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

Freeze.

Para mi lo mejor seria que esperaras la tecla a pulsar con GetAsyncKeyState luego con keyb_event envias la tecla que corresponda. Debes trabajar con Swith y Case. Suerte..!

HJZR4

Para aprender solo hay una solución:
LeeR y Preguntar

Vampersy

Hola gente¡
Este es mi problema:
EStoy desarrollando un sistema de administracion de centros de computo(C.C), el cual sera implementado en una instutucion que maneja cerca de 2100 usuarios diarios.
El sistema es un cliente-servidor, y necesito estarlo actualizando cada 6 meses.
El problema es que el C.C en odas sus Pc's tiene instalado el DeeFreeze 4.20, y como ustedes saben, no puedo enviar las actualizaciones a los clientes, mientras el DeepF este activado. Como solucion estoy implementando el DeepUnFreeze, y activo y desactivo como sigue:
<<<ACTIVANDO EL DEEPFREEZE>>>
If cont = 1 Then
'Paso 1
ReturnValue = Shell("H:\DeepUnfreezer1.6", vbMaximizedFocus) 'AppActivate ReturnValue       '
cont = cont + 1
tmrDesactivaDeepFreeze.Interval = 3000
ElseIf cont = 2 Then
'Paso 2
For X = 1 To 2
      SendKeys "{DOWN}", True   '
Next X
cont = cont + 1
tmrDesactivaDeepFreeze.Interval = 3000
ElseIf cont = 3 Then
'Paso 3
For I = 1 To 2   '
        SendKeys "{TAB}", True    '
Next I
cont = cont + 1
tmrDesactivaDeepFreeze.Interval = 3000

ElseIf cont = 4 Then
'Paso 4
SendKeys "{ENTER}", True
cont = cont + 1
tmrDesactivaDeepFreeze.Interval = 3000

ElseIf cont = 5 Then
'Paso 5
SendKeys "%{F4}", True
tmrDesactivaDeepFreeze.Enabled = False
Call Reiniciar
End If

<<<DESACTIVADO EL DEEPFREEZE>>>
Paso 1
If cont = 1 Then
ReturnValue = Shell("H:\DeepUnfreezer1.6", vbMaximizedFocus) ' Ejecuta la Calculadora.
AppActivate ReturnValue       ' Activa Desfrizador
cont = cont + 1
tmrActivaDeepFreeze.Interval = 3000

'Paso 2
ElseIf cont = 2 Then
   SendKeys "{TAB 2}", True   'Nos posicionamos para reactivar el deep freeze.
cont = cont + 1
tmrActivaDeepFreeze.Interval = 3000

'Paso 3
ElseIf cont = 3 Then
SendKeys "{ENTER}", True    ' Activamos el DeepFreeze
cont = cont + 1
tmrActivaDeepFreeze.Interval = 3000


'Paso 6
ElseIf cont = 4 Then
SendKeys "%{F4}", True      'Cerramos el DeepF
tmrActivaDeepFreeze.Enabled = False
'Call Reiniciar(True)        'Reiniciamos el equipo

End If
---------------------------------------------------------------------------
Y funciona muy bien, pero eso es hasta la version (5.50) que desactiva el DeepUnfreeze).
Como solucion definitiva pense en lo siguiente:
Conociendo la contraseña de DeepF:

Dim ReturnValue, I
ReturnValue = Shell("FrzState.exe", 1)   ' Ejecuta DeepFreeze
AppActivate ReturnValue       ' Activa el DeepF.
   'Copiamos al clep la contraseña del DeepFreeze
   SendKeys "^{V}", True    ' y pegamos la contraseña
     SendKeys "{ENTER}", True   ' hacemos enter
        SendKeys "{TAB} 4", True   ' posicionarnos el el stado que keremos activar
       SendKeys "{TAB} 3", True   ' Nos posicionamos en el boton OK
       SendKeys "{ENTER}", True   ' y finalemente hacemos enter y
       Call reiniciamos
pero con el shell no encuentra el exe del Deep, ni aunque le ponga el path completo. Esto me serviria para solucionar mi problema de actualizaciones del sistema, y sin violar las reglas del C.C, ni utilizando  programitas antiDeepF.

Gracias por sus aportaciones y estamos en contacto... ;D

vivachapas

Cita de: ►Freeze en 14 Enero 2008, 22:40 PM
Para mi lo mejor seria que esperaras la tecla a pulsar con GetAsyncKeyState luego con keyb_event envias la tecla que corresponda. Debes trabajar con Swith y Case. Suerte..!

asi como dice freeze quisas te sirva... muchos juegos no usan el evente down de la tecla sino up.. y sendkeys envia el down... me di cuenta cuando queria hacer lo mismo para un jeugo.. y viendo el code del juego vi q decia... keyup then.. bla bla... tenes q usar el keyb_event

espero q me hayas entendido


SALUDOS