Python中的按键

Python中的按键,python,keypress,Python,Keypress,有没有可能让系统觉得某个键被按下了,例如,我需要让一个键被按下数千次,手动操作要花费很多时间,我想写一些东西来帮我完成,我唯一知道的就是Python 更好的说法是,我需要模拟按键,即不捕捉按键 更多信息(按要求): 我正在运行windows XP,需要将按键发送到另一个应用程序。非常适合此类任务(键盘自动/重新映射) 发送“A”100次的脚本: Send {A 100} 就这些 编辑:要将密钥发送到特定应用程序: WinActivate Word Send {A 100} 安装扩展插件。然后

有没有可能让系统觉得某个键被按下了,例如,我需要让一个键被按下数千次,手动操作要花费很多时间,我想写一些东西来帮我完成,我唯一知道的就是Python

更好的说法是,我需要模拟按键,即不捕捉按键

更多信息(按要求): 我正在运行windows XP,需要将按键发送到另一个应用程序。

非常适合此类任务(键盘自动/重新映射)

发送“A”100次的脚本:

Send {A 100}
就这些

编辑:要将密钥发送到特定应用程序:

WinActivate Word
Send {A 100}
安装扩展插件。然后您可以执行以下操作:

import win32com.client as comclt
wsh= comclt.Dispatch("WScript.Shell")
wsh.AppActivate("Notepad") # select another application
wsh.SendKeys("a") # send the keys you want
搜索WScript.Shell对象的文档(我相信在所有WindowsXP安装中默认安装)。也许你可以开始

编辑:发送F11

import win32com.client as comctl
wsh = comctl.Dispatch("WScript.Shell")

# Google Chrome window title
wsh.AppActivate("icanhazip.com")
wsh.SendKeys("{F11}")

如果您的平台是Windows,我不会推荐Python。相反,要调查。相信我,我喜欢Python,但在这种情况下,宏程序是完成这项工作的理想工具。Autohotkey的脚本编写非常不错(在我看来),但是模拟输入的简单性将为您节省无数的时间。自动热键脚本也可以“编译”,因此您不需要解释器来运行脚本

另外,如果这是为了网络上的东西,我推荐。它是一个firefox插件,因此可以更好地与网站集成。例如,您可以说“在此表单中写入1000”而不是“在(319400)处模拟鼠标单击,然后按“a”1000次”


不幸的是,对于Linux,我还没有找到一种很好的方法来轻松创建键盘/鼠标宏。

在发送按键事件之前将首选窗口设置为前台的替代方法

hwnd = win32gui.FindWindowEx(0,0,0, "App title")
win32gui.SetForegroundWindow(hwnd)

您还可以使用PyAutoGui发送虚拟按键

以下是文档:

您还可以通过以下方式发送shift键或enter键等键:

import pyautogui

pyautogui.press('shift')
Pyautogui还可以发送直白文本,如下所示:

import pyautogui

pyautogui.typewrite('any text you want to type')
至于按“A”键1000次,看起来是这样的:

import pyautogui

for i in range(999):
    pyautogui.press("a")
alt tab或其他需要同时按下多个键的任务:

import pyautogui

# Holds down the alt key
pyautogui.keyDown("alt")

# Presses the tab key once
pyautogui.press("tab")

# Lets go of the alt key
pyautogui.keyUp("alt")
使用许多功能检查此模块。请使用以下命令进行安装:

pip3 install keyboard
然后使用以下代码:

import keyboard
keyboard.write('A',delay=0)
如果要多次写入“A”,只需使用循环即可。
注意:

整个窗口都将按“A”键。这意味着脚本正在运行,您进入浏览器后,脚本将开始在那里写入。PyAutoGui还允许您多次按下按钮:

pyautogui.press('tab', presses=5)   # press TAB five times in a row

pyautogui.press('A', presses=1000)   # press A a thousand times in a row
有一个解决方案:

import pyautogui
for i in range(1000):
    pyautogui.typewrite("a")

您可以使用pyautogui模块,该模块可用于自动移动鼠标和按键。它也可以用于一些GUI(非常基本)。 您可以执行以下操作:- 导入pyautogui pyautogui.press('A')#按'A'键

如果要执行1000次,则可以使用while循环


希望这是有帮助的:)

这很有效,但不能回答问题,所以我会投票支持它,但我不能接受它作为答案。太棒了,正是我需要的。。。它还允许捕获屏幕截图。仅供参考,该模块依赖于具有大量依赖关系的
pyobjc
。安装时请记住,我同意@NumberMiac。例如,“py2exe”在使用此软件包转换为EXE PY文件时遇到问题,很可能是因为存在大量依赖关系。另外,必须有人安装一个额外的次要软件包,而最终结果可以通过Python附带的“Win32 COM”(或主要软件包PyWin32)来实现。有没有办法使用此库按住键几秒钟。我不想要多个按键,只有一个直到它被释放。我浏览了API文档,但找不到我想要的东西——有很多按钮组合的东西。这很可能——但是你想让按键去哪里呢?到另一个应用程序?这可能是理解平台的窗口工具包并将正确的消息发送到正确的窗口的情况。明确你的要求,我相信我们能帮上忙。这是目前为止最好的答案。原因是什么?它不需要安装任何额外的软件包!最重要的是,它可以被编译成带有“py2exe”w/o问题的EXE,而“pynput”和“pyautogui”会产生问题。要是我能多次投你一票就好了!:)
import keyboard

keyboard.press_and_release('anykey')
import pyautogui
for i in range(1000):
    pyautogui.typewrite("a")