How can I send keys to a game I am playing,using p

2019-07-06 22:54发布

问题:

I am playing deus ex human revolution,and there are things you can access with the correct 4 digit code.

I was wondering if you could make a script to brute force it sending keystrokes to the game. I have tried using send keys but i could not make it work.Any ideas?Thanks.

Python:

-SendKeys

This is what I have tried,which I found here:

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')

The way I am trying at first is open the game with the script,put a time delay to load the save game,and I open a terminal to hack it, but the key is not send.

-pywinauto:

Using pywinauto I have this:

from pywinauto import application
import time

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

Now I am searching which dialogs are available.

AutoHotKeys:

So except from python,I am trying with AutoHotKeys:

This works:

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

The keydelay is the minimum I found that didn't miss any buttons.I am looking for a way to make it faster,maybe by using a different send method.

Updated:

-pywinauto -autohotkeys

回答1:

Have you ever tried this ?



回答2:

You've probably already thought of this but just in case, make sure you try your solution(s) in a couple of places. IIRC, there's a couple of spots in Deus Ex where you have to discover the code in-game before you can use it, even though the code itself is hard-wired into the game.

What'd be really cool is if you got something to do the hacking mini-games automatically. :)



回答3:

Some years late, but answering anyway as other might face the same problem like I did...

In Windows you can use win32api to send keys to the active application, but you have to give it a scan code also to make it work in some types of applications such as games

To send a single key, you must have it's virtual key code that you can get either by using the solution Here or by having a dictionary (that you can easily find done in google or make it yourself)

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)


标签: python key