8

キーを押したときに画面上の特定のスポットをクリックするマクロを作成しています。

初めてキーを押すと、すべてが正常に動作します。
ただし、それ以外のキーを押すと、次のエラーが発生します。

    time.sleep(0.1)
TypeError: an integer is required

コードは次のとおりです。

import win32api
import win32con
import time
import pythoncom
import pyHook
import os

def Click(x,y):
    win32api.SetCursorPos((x,y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)

def DeleteRun(event):
    Click(1250, 741)
    time.sleep(0.1)
    Click(649,261)
    time.sleep(0.1)
    Click(651, 348)
    time.sleep(0.1)
    Click(800, 442)
    time.sleep(0.1)
    Click(865, 612)


Click(20,20)
KeyGrabber = pyHook.HookManager()
KeyGrabber.KeyDown = DeleteRun
KeyGrabber.HookKeyboard()
pythoncom.PumpMessages()

DeleteRun関数がによって実行されるpyHookのは初めてのようですtime.sleep() フロートを受け入れます。
次の関数呼び出しでは、整数のみを受け入れるようです。

これは何が原因ですか?
マウス配置が5秒待ちきれない!時間短縮になりそうです!

仕様:

  • パイソン2.7.2
  • ウィンドウズ 7 (32)
4

2 に答える 2

5

さて、これはどうですか?DeleteRunに戻り値Trueを追加します。

def DeleteRun(event):
    Click(1250, 741)
    time.sleep(0.1)
    [...]
    return True

私はおそらくこれがgoogle-fuに過ぎなかったことを告白する必要があります:この質問への答えを読んでください。

于 2012-03-18T22:18:26.893 に答える
-1

今回の Windows の何が問題なのかはわかりませんが、select() をファイル記述子なしで使用して、高精度のスリープを偽装してみることができます。

于 2012-03-18T21:52:19.207 に答える