質問
システムにキーが押されたように見せることは可能ですか、たとえば A キーを数千回押す必要があり、それを行うには時間がかかります手動で、私のために何かを書いてみたいと思います。私が十分に知っているのはPythonだけです。
それを置くより良い方法、キーを押すことをエミュレートする必要があります。キー押下をキャプチャしません。
詳細(要求に応じて): Windows XPを実行していますが、キーを別のアプリケーションに送信する必要があります。
解決
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インストールにデフォルトでインストールされていると思います)。おそらくここから開始できます。
>編集: F11の送信
import win32com.client as comctl
wsh = comctl.Dispatch("WScript.Shell")
# Google Chrome window title
wsh.AppActivate("icanhazip.com")
wsh.SendKeys("{F11}")
他のヒント
PyAutoGuiを使用して、仮想キーの押下を送信することもできます。
ドキュメントは次のとおりです。 https://pyautogui.readthedocs.org/en/latest/
import pyautogui
pyautogui.press('Any key combination')
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")
AutoHotKey は、この種のタスクに最適です(キーボードの自動化/再マッピング)
" A"を送信するスクリプト100回:
Send {A 100}
これですべて
編集:特定のアプリケーションにキーを送信するには:
WinActivate Word
Send {A 100}
多くの機能を備えたこのモジュールを キーボード でチェックします。インストール、おそらく次のコマンドで:
pip3 install keyboard
このコードを使用:
import keyboard
keyboard.write('A',delay=0)
「A」を複数回記述したい場合は、単純にループを使用します。
注:
キー「A」は、ウィンドウ全体で押されます。スクリプトが実行されていることを意味し、ブラウザに移動すると、スクリプトはそこで書き込みを開始します。
プラットフォームがWindowsの場合、実際にはPythonをお勧めしません。代わりに、オートホットキーをご覧ください。私を信じてください、私はPythonが大好きですが、この状況ではマクロプログラムが仕事に理想的なツールです。 Autohotkeyのスクリプティングは(私の意見では)まともですが、入力をシミュレートするのが簡単なので、数え切れないほどの時間を節約できます。 Autohotkeyスクリプトは「コンパイル」できます。同様に、スクリプトを実行するためにインタープリターを必要としません。
また、これがWeb上のものである場合、 iMacros 。これは、Firefoxプラグインであるため、Webサイトとの統合がはるかに優れています。たとえば、「この形式で1000個の「a」を書き込む」と言うことができます。 「(319,400)でマウスクリックをシミュレートしてから、「a」を1000回押す」の代わりに。
Linuxの場合、残念ながらキーボード/マウスマクロを簡単に作成するための良い方法を見つけることができませんでした。
キー押下イベントを送信する前に優先ウィンドウをフォアグラウンドに設定する代替方法。
hwnd = win32gui.FindWindowEx(0,0,0, "App title")
win32gui.SetForegroundWindow(hwnd)