Как я могу отправить ключи к игре, в которую я играю, используя python? - PullRequest
3 голосов
/ 02 ноября 2011

Я играю в deus ex Human Revolution, и есть вещи, к которым вы можете получить доступ с помощью правильного 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

Задержка нажатия клавиш - это минимум, который я обнаружил, при котором не пропускаются никакие кнопки. Я ищу способ ускорить его, возможно, с помощью другого метода отправки.

Обновлено:

-pywinauto -autohotkeys

Ответы [ 3 ]

3 голосов
/ 02 ноября 2011

Вы когда-нибудь пробовали это ?

1 голос
/ 02 ноября 2011

Вы, наверное, уже подумали об этом, но на всякий случай обязательно попробуйте свои решения в нескольких местах.IIRC, в Deus Ex есть несколько мест, где вы должны узнать код в игре, прежде чем использовать его, даже если сам код встроен в игру.

Что бы на самом делекруто, если у вас есть что делать, чтобы взломать мини-игры автоматически.:)

0 голосов
/ 06 августа 2018

Несколько лет спустя, но, отвечая так или иначе, другие могут столкнуться с той же проблемой, что и я ...

В Windows вы можете использовать win32api для отправки ключей активному приложению, но вы также должны предоставить ему код сканирования, чтобы он работал в некоторых типах приложений, таких как игры

Чтобы отправить один ключ, у вас должен быть код виртуального ключа , который вы можете получить либо используя решение Здесь или имея словарь (который вы можете легко найти в 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...