¿Cómo puedo enviar claves a un juego que estoy jugando con python?

Estoy jugando a Deus ex Human Revolution, y hay cosas a las que puedes acceder con el código correcto de 4 dígitos.

Me preguntaba si podría hacer un guión para forzarlo bruscamente enviando teclas al juego. He intentado usar las teclas de envío pero no pude hacer que funcionara. ¿Alguna idea? Gracias.

Pitón:

-Enviar claves

Esto es lo que he intentado, lo que encontré aquí:

import win32com.client import time import SendKeys import os from ctypes import * shell = win32com.client.Dispatch("WScript.Shell") os.startfile('C:\\....exe') time.sleep( 150 ) shell.SendKeys('1') 

La forma en que lo estoy intentando al principio es abrir el juego con el script, poner un retraso para cargar el juego guardado, y abro una terminal para hackearlo, pero la clave no es enviar.

    -pywinauto

    Usando pywinauto tengo esto:

     from pywinauto import application import time app=application.Application() app.connect_(title_re = "Deus Ex: Human Revolution - The Missing Link", class_name = "DeusExHRE") 

    Ahora estoy buscando que diálogos están disponibles.

    AutoHotKeys:

    Entonces, excepto en Python, estoy probando con AutoHotKeys:

    Esto funciona:

     SetKeyDelay 180 F12:: Send {0 down} Send {0 up} Send {0 down} Send {0 up} Send {0 down} Send {0 up} Send {0 down} Send {0 up} Send {Backspace down} Send {Backspace up} Return 

    El retraso del teclado es el mínimo que encontré y que no faltó ningún botón. Estoy buscando una manera de hacerlo más rápido, tal vez utilizando un método de envío diferente.

    Actualizado:

    -pywinauto -autohotkeys

    ¿Alguna vez has probado esto ?

    Probablemente ya haya pensado en esto, pero por si acaso, asegúrese de probar su (s) solución (s) en un par de lugares. IIRC, hay un par de lugares en Deus Ex donde tienes que descubrir el código en el juego antes de poder usarlo, a pesar de que el código en sí está integrado en el juego.

    Lo que sería realmente genial es si tienes algo para hacer los mini-juegos de pirateo automáticamente. 🙂

    Algunos años tarde, pero respondiendo de todos modos ya que otros podrían enfrentar el mismo problema que yo …

    En Windows, puede usar win32api para enviar claves a la aplicación activa, pero también debe darle un código de escaneo para que funcione en algunos tipos de aplicaciones, como los juegos.

    Para enviar una sola clave, debe tener su código de clave virtual que puede obtener usando la solución aquí o un diccionario (que puede encontrar fácilmente en Google o hacerlo usted mismo)

    MapVirtualKey

    keybd_event

     import win32api, time # in this example i'm using a dictionary (that i called VK_CODE) # to map the keys to their respective virtual key codes # Sending the key a i = 'a' # send key down event win32api.keybd_event(VK_CODE[i], win32api.MapVirtualKey(VK_CODE[i], 0), 0, 0) # wait for it to get registered. # You might need to increase this time for some applications time.sleep(.05) # send key up event win32api.keybd_event(VK_CODE[i], win32api.MapVirtualKey(VK_CODE[i], 0), win32con.KEYEVENTF_KEYUP, 0)