2008-09-25 2 views
16

Возможно ли, чтобы система показала, что нажата клавиша, например, мне нужно сделать . Клавиша будет нажата тысячи раз, и это займет много времени, чтобы сделать это вручную , Я хотел бы написать что-то, чтобы сделать это для меня, и единственное, что я знаю достаточно хорошо, это Python.Key Presses in Python

Лучший способ выразить это, мне нужно подражать нажатию клавиши, I.E. не захватывать нажатие клавиши.

Дополнительная информация (по запросу): Я запускаю Windows XP и вам необходимо отправить ключи в другое приложение.

ответ

21

Установите расширения pywin32. После этого вы можете сделать следующее:

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 (я считаю, устанавливается по умолчанию во всех установках Windows XP). Вы можете начать here, возможно.

EDIT: Отправка f11

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

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

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

Уточните ваши требования, и я уверен, что мы можем помочь.

8

AutoHotKey идеально подходит для такого рода задач (клавиатура автоматизации/переназначения)

Script, чтобы отправить "А" в 100 раз:

Send {A 100} 

Это все

EDIT: отправить ключи к конкретному применению:

WinActivate Word 
Send {A 100} 
+2

Это работает, но не отвечает на вопрос, поэтому я проголосую, но я не могу принять его в качестве ответа. – UnkwnTech 2008-09-25 23:37:49

1

Если вы платформа Windows, то я бы не рекомендовал фактически Python. Вместо этого просмотрите Autohotkey. Поверьте мне, я люблю Python, но в этом случае программа макросов является идеальным инструментом для работы. Сценарии Autohotkey являются только приличными (на мой взгляд), но легкость имитации ввода сэкономит вам бесчисленные часы. Сценарии Autohotkey также могут быть «скомпилированы», поэтому вам не нужен интерпретатор для запуска скрипта.

Кроме того, если это что-то в Интернете, я рекомендую iMacros. Это плагин firefox и поэтому имеет гораздо лучшую интеграцию с веб-сайтами. Например, вы можете сказать «напишите 1000» a в этой форме, а не «имитируйте mouseclick (319 400), а затем нажмите« a »1000 раз».

Для Linux я, к сожалению, не смог найти хороший способ легко создавать макросы клавиатуры и мыши.

1

Альтернативный способ установки предпочтительного окна на передний план перед отправкой события нажатия клавиши.

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

Вы также можете использовать PyAutoGui для отправки виртуальных нажатий клавиш.

Вот документация: https://pyautogui.readthedocs.org/en/latest/

import pyautogui 


pyautogui.press('Any key combination') 

Вы также можете отправить ключи, как клавиши переключения или клавишу ввода с:

import pyautogui 

pyautogui.press('shift') 

Pyautogui также может отправить прямой текст следующим образом:

import pyautogui 

pyautogui.typewrite('any text you want to type') 

Что касается нажатия клавиши «A» 1000 раз, это выглядело бы что-то li ке это:

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") 
+1

Удивительный, именно то, что мне нужно ... и он позволяет снимать скриншоты. – 2015-10-30 14:42:41

2

Check Этот модуль keyboard со многими features.Install это, возможно, с эта команда:

pip3 install keyboard 

Затем используйте этот код:

import keyboard 
keyboard.write('A',delay=0) 

Если вы хотите написать «A» несколько раз, тогда просто используйте цикл.
Примечание:
Ключ «A» будет нажата в течение всего windows.Means скрипт работает, и вы пошли в браузере, то сценарий будет начать писать там.

+0

Есть ли способ использовать эту библиотеку, чтобы нажать и удерживать клавишу в течение нескольких секунд. Я не хочу использовать несколько клавиш, только один, пока он не будет выпущен. Я просмотрел документы API и не могу найти именно то, что я ищу - много материала с кнопочными комбо. – thomascrha 2018-02-11 00:03:23