如何使用python将密钥发送到我正在玩的游戏?

时间:2011-11-02 19:35:00

标签: python key

我正在玩人类革命的deus,你可以使用正确的4位数代码访问。

我想知道你是否可以制作一个剧本来强制它向游戏发送击键。 我尝试使用发送密钥,但我无法使其工作。任何想法?谢谢。

的Python:

-SendKeys

这是我试过的,我在这里找到了:

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

我最初尝试的方式是使用脚本打开游戏,加载保存游戏时间延迟,然后我打开一个终端来破解它,但密钥不会发送。

-pywinauto:

使用pywinauto我有这个:

from pywinauto import application
import time

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

现在我正在搜索哪些对话框可用。

AutoHotKeys:

所以除了python,我正在尝试使用AutoHotKeys:

这有效:

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

keydelay是我发现的最小值,它没有错过任何按钮。我正在寻找一种方法,使其更快,可能使用不同的发送方法。

已更新:

-pywinauto -autohotkeys

3 个答案:

答案 0 :(得分:3)

你有没有试过this

答案 1 :(得分:1)

您可能已经考虑过这一点,但为了以防万一,请确保您在几个地方尝试解决方案。 IIRC,在Deus Ex中有几个地方你必须在使用之前发现游戏中的代码,即使代码本身已经硬连接到游戏中。

如果你有自动完成黑客迷你游戏的话,真的很酷。 :)

答案 2 :(得分:0)

晚了几年,但无论如何回答,都可能会遇到和我一样的问题……

在Windows中,您可以使用win32api将密钥发送到活动的应用程序,但是您还必须为其提供扫描代码,以使其能够在某些类型的应用程序(例如游戏)中运行

要发送单个密钥,您必须拥有virtual key code才能通过 使用解决方案Here或拥有字典(您可以轻松地在Google中找到完成的内容或自己动手做)

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)