python-3.x - 如何将 Python 应用程序中的字符串打印到 Flash 游戏中的浏览器文本字段
问题描述
我希望这个小型 python 程序能够将字符串输出到 Google Chrome 上的 Flash 游戏中的文本字段中。按键模拟工作,但是打印功能显然只将打印的代码返回到控制台。
我尝试了一些解决方法,使用 for 循环将字符串值推送到 .press 和 .release 函数中,但是(这不仅不是最佳代码)它(据我所知)无法完成。
def click():
username=textentry.get()
time.sleep(2)
for i in range(1000):
print(username)
keyboard.press(Key.tab)
keyboard.release(Key.tab)
print(f'{i:03}')
keyboard.press(Key.enter)
keyboard.release(Key.enter)
keyboard.press(Key.shift)
keyboard.press(Key.tab)
keyboard.release(Key.tab)
keyboard.release(Key.shift)
可以很好地打印到控制台,并且按键和释放都可以正常工作。唯一的问题是文本不会被发送到控制台之外的任何东西。
我的理想情况是,您可以简单地启动程序,然后单击文本字段(一个用于用户名,另一个用于 3 代码整数),它会为您完成剩下的工作,运行与用户名相关的 000 个整数,直到它得到朋友代码。
这个程序不是(也不能)猜出某人的密码。这是一款名为棒帝国的无害 Flash 游戏。
解决方案
这个问题似乎无法解决(我可能是错的,但经过数小时的研究,反复出现的答案是它无法完成。)但这里有一个半解决方法:
如果您使用 pynputs .type("") 函数,您基本上可以在操作系统中排队按键,就好像您自己正在输入一个字符串一样。要按照我上面的要求执行此操作,第一个文本字段需要输入用户名,第二个文本字段需要 3 位整数(从 000 迭代到 999 以实现所有可能性)我必须使用两个 for 循环并调用一堆功能。它看起来很丑,但它很实用。
#Click function to run inputs
def click():
t = 0; j = 0
lst = []
keyboard = Controller()
username = textentry.get()
a = len(username)
time.sleep(2)
for i in range(1000):
for j in range(a):
keyboard.press(username[j])
keyboard.release(username[j])
j += 1
keyboard.press(Key.tab)
keyboard.release(Key.tab)
lst.append(f'{i:03}')
keyboard.type(lst[i])
keyboard.press(Key.enter)
keyboard.release(Key.enter)
keyboard.press(Key.shift)
keyboard.press(Key.tab)
time.sleep(0.02)
keyboard.release(Key.tab)
keyboard.release(Key.shift)
i += 1
j = 0
推荐阅读
- python - 如何找到满足存储在列表中的特定值组合的熊猫数据框行?
- c# - 同一个数据库EntityFrameWork核心的两个连接
- vb.net - 我想取消选中表单和其他表单上的单选按钮
- typescript - 如何将关系加载到 TypeORM 树实体?
- node.js - 处理提交表单的问题。(反应/猫鼬/Nodejs)
- mysql - 如何将用户绑定到具有不同角色的不同组织、大学、公司?
- python - BERT 在语料库上微调的输入格式
- javascript - 在本地 Web 应用程序中的 javascript 中加载 json 预训练模型时出错
- php - 分页输出 laravel 刀片
- python - 如何在 matlab 中从一组具有 x、y 和 z 坐标的点生成体素网格