34

キーが押されたようにシステムに見せることはできますか?たとえば、キーをA何千回も押さなければならず、手動で行うのは非常に時間がかかります。何かを書きたいと思います。私にとって、そして私が十分によく知っているのはPythonだけです。

より良い言い方をすれば、私はキーの押下をエミュレートする必要があります。IEはキーの押下をキャプチャしません。

詳細情報(要求に応じて):Windows XPを実行していて、別のアプリケーションにキーを送信する必要があります。

4

11 に答える 11

44

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}")
于 2008-09-25T23:09:39.550 に答える
41

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")
于 2015-10-21T00:57:43.800 に答える
10

AutoHotKeyは、この種のタスク(キーボードの自動化/再マッピング)に最適です。

「A」を100回送信するスクリプト:

Send {A 100}

それで全部です

編集:特定のアプリケーションにキーを送信するには:

WinActivate Word
Send {A 100}
于 2008-09-25T23:03:55.820 に答える
3

キー プレス イベントを送信する前に優先ウィンドウをフォアグラウンドに設定する別の方法。

hwnd = win32gui.FindWindowEx(0,0,0, "App title")
win32gui.SetForegroundWindow(hwnd)
于 2009-08-15T19:16:47.593 に答える
2

プラットフォームがWindowsの場合、実際にはPythonはお勧めしません。代わりに、Autohotkeyを調べてください。私を信じてください、私はPythonが大好きですが、この状況では、マクロプログラムがその仕事に理想的なツールです。Autohotkeyのスクリプトは(私の意見では)まともですが、入力のシミュレーションが簡単なため、数え切れないほどの時間を節約できます。Autohotkeyスクリプトも「コンパイル」できるため、スクリプトを実行するためにインタープリターは必要ありません。

また、これがWeb上のものである場合は、iMacrosをお勧めします。これはFirefoxプラグインであるため、Webサイトとの統合がはるかに優れています。たとえば、「(319,400)でマウスクリックをシミュレートしてから「a」を1000回押す」のではなく、「このフォームに1000'aを書き込む」と言うことができます。

Linuxの場合、残念ながら、キーボード/マウスマクロを簡単に作成するための良い方法を見つけることができませんでした。

于 2008-09-25T23:12:13.130 に答える
1

解決策があります:

import pyautogui
for i in range(1000):
    pyautogui.typewrite("a")
于 2021-02-17T14:06:16.777 に答える